wip: tutorial

This commit is contained in:
reya 2023-12-01 15:45:43 +07:00
parent 9ddf3471ce
commit fc35745c0d
16 changed files with 465 additions and 242 deletions

View File

@ -49,17 +49,17 @@
"@tauri-apps/plugin-sql": "2.0.0-alpha.3", "@tauri-apps/plugin-sql": "2.0.0-alpha.3",
"@tauri-apps/plugin-updater": "2.0.0-alpha.3", "@tauri-apps/plugin-updater": "2.0.0-alpha.3",
"@tauri-apps/plugin-upload": "2.0.0-alpha.3", "@tauri-apps/plugin-upload": "2.0.0-alpha.3",
"@tiptap/extension-character-count": "^2.1.12", "@tiptap/extension-character-count": "^2.1.13",
"@tiptap/extension-document": "^2.1.12", "@tiptap/extension-document": "^2.1.13",
"@tiptap/extension-image": "^2.1.12", "@tiptap/extension-image": "^2.1.13",
"@tiptap/extension-mention": "^2.1.12", "@tiptap/extension-mention": "^2.1.13",
"@tiptap/extension-paragraph": "^2.1.12", "@tiptap/extension-paragraph": "^2.1.13",
"@tiptap/extension-placeholder": "^2.1.12", "@tiptap/extension-placeholder": "^2.1.13",
"@tiptap/extension-text": "^2.1.12", "@tiptap/extension-text": "^2.1.13",
"@tiptap/pm": "^2.1.12", "@tiptap/pm": "^2.1.13",
"@tiptap/react": "^2.1.12", "@tiptap/react": "^2.1.13",
"@tiptap/starter-kit": "^2.1.12", "@tiptap/starter-kit": "^2.1.13",
"@tiptap/suggestion": "^2.1.12", "@tiptap/suggestion": "^2.1.13",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
"framer-motion": "^10.16.9", "framer-motion": "^10.16.9",
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",

View File

@ -99,38 +99,38 @@ dependencies:
specifier: 2.0.0-alpha.3 specifier: 2.0.0-alpha.3
version: 2.0.0-alpha.3 version: 2.0.0-alpha.3
'@tiptap/extension-character-count': '@tiptap/extension-character-count':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-document': '@tiptap/extension-document':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-image': '@tiptap/extension-image':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-mention': '@tiptap/extension-mention':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12)(@tiptap/suggestion@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)
'@tiptap/extension-paragraph': '@tiptap/extension-paragraph':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-placeholder': '@tiptap/extension-placeholder':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-text': '@tiptap/extension-text':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)
'@tiptap/pm': '@tiptap/pm':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12 version: 2.1.13
'@tiptap/react': '@tiptap/react':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12)(react-dom@18.2.0)(react@18.2.0) version: 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)(react-dom@18.2.0)(react@18.2.0)
'@tiptap/starter-kit': '@tiptap/starter-kit':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/pm@2.1.12) version: 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/suggestion': '@tiptap/suggestion':
specifier: ^2.1.12 specifier: ^2.1.13
version: 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) version: 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
dayjs: dayjs:
specifier: ^1.11.10 specifier: ^1.11.10
version: 1.11.10 version: 1.11.10
@ -208,7 +208,7 @@ dependencies:
version: 6.3.7 version: 6.3.7
tiptap-markdown: tiptap-markdown:
specifier: ^0.8.7 specifier: ^0.8.7
version: 0.8.7(@tiptap/core@2.1.12) version: 0.8.7(@tiptap/core@2.1.13)
virtua: virtua:
specifier: ^0.16.7 specifier: ^0.16.7
version: 0.16.7(react-dom@18.2.0)(react@18.2.0) version: 0.16.7(react-dom@18.2.0)(react@18.2.0)
@ -710,8 +710,8 @@ packages:
resolution: {integrity: sha512-Ua8gpC+28Eo9D2/xynTrrZIrSawgtobwtRLLYq4wH8N19qoMspWZ1vqfsDDVPgQFa+iHsVAk/SbdmoPAj6OH1g==} resolution: {integrity: sha512-Ua8gpC+28Eo9D2/xynTrrZIrSawgtobwtRLLYq4wH8N19qoMspWZ1vqfsDDVPgQFa+iHsVAk/SbdmoPAj6OH1g==}
dev: false dev: false
/@floating-ui/core@1.5.0: /@floating-ui/core@1.5.1:
resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} resolution: {integrity: sha512-QgcKYwzcc8vvZ4n/5uklchy8KVdjJwcOeI+HnnTNclJjs2nYsy23DOCf+sSV1kBwD9yDAoVKCkv/gEPzgQU3Pw==}
dependencies: dependencies:
'@floating-ui/utils': 0.1.6 '@floating-ui/utils': 0.1.6
dev: false dev: false
@ -719,7 +719,7 @@ packages:
/@floating-ui/dom@1.5.3: /@floating-ui/dom@1.5.3:
resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
dependencies: dependencies:
'@floating-ui/core': 1.5.0 '@floating-ui/core': 1.5.1
'@floating-ui/utils': 0.1.6 '@floating-ui/utils': 0.1.6
dev: false dev: false
@ -2282,232 +2282,232 @@ packages:
'@tauri-apps/api': 2.0.0-alpha.11 '@tauri-apps/api': 2.0.0-alpha.11
dev: false dev: false
/@tiptap/core@2.1.12(@tiptap/pm@2.1.12): /@tiptap/core@2.1.13(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ==} resolution: {integrity: sha512-cMC8bgTN63dj1Mv82iDeeLl6sa9kY0Pug8LSalxVEptRmyFVsVxGgu2/6Y3T+9aCYScxfS06EkA8SdzFMAwYTQ==}
peerDependencies: peerDependencies:
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-blockquote@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-blockquote@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg==} resolution: {integrity: sha512-oe6wSQACmODugoP9XH3Ouffjy4BsOBWfTC+dETHNCG6ZED6ShHN3CB9Vr7EwwRgmm2WLaKAjMO1sVumwH+Z1rg==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-bold@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-bold@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg==} resolution: {integrity: sha512-6cHsQTh/rUiG4jkbJer3vk7g60I5tBwEBSGpdxmEHh83RsvevD8+n92PjA24hYYte5RNlATB011E1wu8PVhSvw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-bubble-menu@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-bubble-menu@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw==} resolution: {integrity: sha512-Hm7e1GX3AI6lfaUmr6WqsS9MMyXIzCkhh+VQi6K8jj4Q4s8kY4KPoAyD/c3v9pZ/dieUtm2TfqrOCkbHzsJQBg==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
tippy.js: 6.3.7 tippy.js: 6.3.7
dev: false dev: false
/@tiptap/extension-bullet-list@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-bullet-list@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ==} resolution: {integrity: sha512-NkWlQ5bLPUlcROj6G/d4oqAxMf3j3wfndGOPp0z8OoXJtVbVoXl/aMSlLbVgE6n8r6CS8MYxKhXNxrb7Ll2foA==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-character-count@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-character-count@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-+GFbBG13nvF8mFIeisSERG/Q3CuRsTNwVZIRbJTLgGdbHXFqPhJh4Xfm7cv7OaOYevUlVyO+z5pGD7wIl1bLqQ==} resolution: {integrity: sha512-FxPxS/Uqd4MgndInxXOcgNd225541Nsk1lT5e2uNTSNiQnG7dj7cSFG5KXGcSGLpGGt6e/E28WR6KLV+0/u+WA==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-code-block@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-code-block@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA==} resolution: {integrity: sha512-E3tweNExPOV+t1ODKX0MDVsS0aeHGWc1ECt+uyp6XwzsN0bdF2A5+pttQqM7sTcMnQkVACGFbn9wDeLRRcfyQg==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-code@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-code@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw==} resolution: {integrity: sha512-f5fLYlSgliVVa44vd7lQGvo49+peC+Z2H0Fn84TKNCH7tkNZzouoJsHYn0/enLaQ9Sq+24YPfqulfiwlxyiT8w==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-document@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-document@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw==} resolution: {integrity: sha512-wLwiTWsVmZTGIE5duTcHRmW4ulVxNW4nmgfpk95+mPn1iKyNGtrVhGWleLhBlTj+DWXDtcfNWZgqZkZNzhkqYQ==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-dropcursor@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-dropcursor@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A==} resolution: {integrity: sha512-NAyJi4BJxH7vl/2LNS1X0ndwFKjEtX+cRgshXCnMyh7qNpIRW6Plczapc/W1OiMncOEhZJfpZfkRSfwG01FWFg==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-floating-menu@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-floating-menu@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A==} resolution: {integrity: sha512-9Oz7pk1Nts2+EyY+rYfnREGbLzQ5UFazAvRhF6zAJdvyuDmAYm0Jp6s0GoTrpV0/dJEISoFaNpPdMJOb9EBNRw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
tippy.js: 6.3.7 tippy.js: 6.3.7
dev: false dev: false
/@tiptap/extension-gapcursor@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-gapcursor@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ==} resolution: {integrity: sha512-Cl5apsoTcyPPCgE3ThufxQxZ1wyqqh+9uxUN9VF9AbeTkid6oPZvKXwaILf6AFnkSy+SuKrb9kZD2iaezxpzXw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-hard-break@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-hard-break@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw==} resolution: {integrity: sha512-TGkMzMQayuKg+vN4du0x1ahEItBLcCT1jdWeRsjdM8gHfzbPLdo4PQhVsvm1I0xaZmbJZelhnVsUwRZcIu1WNA==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-heading@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-heading@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w==} resolution: {integrity: sha512-PEmc19QLmlVUTiHWoF0hpgNTNPNU0nlaFmMKskzO+cx5Df4xvHmv/UqoIwp7/UFbPMkfVJT1ozQU7oD1IWn9Hg==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-history@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-history@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg==} resolution: {integrity: sha512-1ouitThGTBUObqw250aDwGLMNESBH5PRXIGybsCFO1bktdmWtEw7m72WY41EuX2BH8iKJpcYPerl3HfY1vmCNw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-horizontal-rule@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-horizontal-rule@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-RRuoK4KxrXRrZNAjJW5rpaxjiP0FJIaqpi7nFbAua2oHXgsCsG8qbW2Y0WkbIoS8AJsvLZ3fNGsQ8gpdliuq3A==} resolution: {integrity: sha512-7OgjgNqZXvBejgULNdMSma2M1nzv4bbZG+FT5XMFZmEOxR9IB1x/RzChjPdeicff2ZK2sfhMBc4Y9femF5XkUg==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-image@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-image@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-VCgOTeNLuoR89WoCESLverpdZpPamOd7IprQbDIeG14sUySt7RHNgf2AEfyTYJEHij12rduvAwFzerPldVAIJg==} resolution: {integrity: sha512-7oVAos+BU4KR/zQsfltrd8hgIxKxyxZ19dhwb1BJI2Nt3Mnx+yFPRlRSehID6RT9dYqgW4UW5d6vh/3HQcYYYw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-italic@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-italic@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A==} resolution: {integrity: sha512-HyDJfuDn5hzwGKZiANcvgz6wcum6bEgb4wmJnfej8XanTMJatNVv63TVxCJ10dSc9KGpPVcIkg6W8/joNXIEbw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-list-item@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-list-item@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg==} resolution: {integrity: sha512-6e8iiCWXOiJTl1XOwVW2tc0YG18h70HUtEHFCx2m5HspOGFKsFEaSS3qYxOheM9HxlmQeDt8mTtqftRjEFRxPQ==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-mention@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12)(@tiptap/suggestion@2.1.12): /@tiptap/extension-mention@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13):
resolution: {integrity: sha512-Nc8wFlyPp+/48IpOFPk2O3hYsF465wizcM3aihMvZM96Ahic7dvv9yVptyOfoOwgpExl2FIn1QPjRDXF60VAUg==} resolution: {integrity: sha512-OYqaucyBiCN/CmDYjpOVX74RJcIEKmAqiZxUi8Gfaq7ryEO5a8Gk93nK+8uZ0onaqHE+mHpoLFFbcAFbOPgkUQ==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
'@tiptap/suggestion': ^2.0.0 '@tiptap/suggestion': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
'@tiptap/suggestion': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/suggestion': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-ordered-list@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-ordered-list@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA==} resolution: {integrity: sha512-UO4ZAL5Vrr1WwER5VjgmeNIWHpqy9cnIRo1En07gZ0OWTjs1eITPcu+4TCn1ZG6DhoFvAQzE5DTxxdhIotg+qw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-paragraph@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-paragraph@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw==} resolution: {integrity: sha512-cEoZBJrsQn69FPpUMePXG/ltGXtqKISgypj70PEHXt5meKDjpmMVSY4/8cXvFYEYsI9GvIwyAK0OrfAHiSoROA==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-placeholder@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/extension-placeholder@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-K52o7B1zkP4vaVy3z4ZwHn+tQy6KlXtedj1skLg+796ImwH2GYS5z6MFOTfKzBO2hLncUzLco/s0C5PLCD6SDw==} resolution: {integrity: sha512-vIY7y7UbqsrAW/y8bDE9eRenbQEU16kNHB5Wri8RU1YiUZpkPgdXP/pLqyjIIq95SwP/vdTIHjHoQ77VLRl1hA==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@tiptap/extension-strike@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-strike@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g==} resolution: {integrity: sha512-VN6zlaCNCbyJUCDyBFxavw19XmQ4LkCh8n20M8huNqW77lDGXA2A7UcWLHaNBpqAijBRu9mWI8l4Bftyf2fcAw==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/extension-text@2.1.12(@tiptap/core@2.1.12): /@tiptap/extension-text@2.1.13(@tiptap/core@2.1.13):
resolution: {integrity: sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg==} resolution: {integrity: sha512-zzsTTvu5U67a8WjImi6DrmpX2Q/onLSaj+LRWPh36A1Pz2WaxW5asZgaS+xWCnR+UrozlCALWa01r7uv69jq0w==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
dev: false dev: false
/@tiptap/pm@2.1.12: /@tiptap/pm@2.1.13:
resolution: {integrity: sha512-Q3MXXQABG4CZBesSp82yV84uhJh/W0Gag6KPm2HRWPimSFELM09Z9/5WK9RItAYE0aLhe4Krnyiczn9AAa1tQQ==} resolution: {integrity: sha512-zNbA7muWsHuVg12GrTgN/j119rLePPq5M8dZgkKxUwdw8VmU3eUyBp1SihPEXJ2U0MGdZhNhFX7Y74g11u66sg==}
dependencies: dependencies:
prosemirror-changeset: 2.2.1 prosemirror-changeset: 2.2.1
prosemirror-collab: 1.3.1 prosemirror-collab: 1.3.1
@ -2529,56 +2529,56 @@ packages:
prosemirror-view: 1.32.4 prosemirror-view: 1.32.4
dev: false dev: false
/@tiptap/react@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12)(react-dom@18.2.0)(react@18.2.0): /@tiptap/react@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-RMO4QmmpL7sPR7w8o1Wq0hrUe/ttHzsn5I/eWwqg1d3fGx5y9mOdfCoQ9XBtm49Xzdejy3QVzt4zYp9fX0X/xg==} resolution: {integrity: sha512-Dq3f8EtJnpImP3iDtJo+7bulnN9SJZRZcVVzxHXccLcC2MxtmDdlPGZjP+wxO800nd8toSIOd5734fPNf/YcfA==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
react: ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0
react-dom: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/extension-bubble-menu': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-bubble-menu': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-floating-menu': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-floating-menu': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
dev: false dev: false
/@tiptap/starter-kit@2.1.12(@tiptap/pm@2.1.12): /@tiptap/starter-kit@2.1.13(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-+RoP1rWV7rSCit2+3wl2bjvSRiePRJE/7YNKbvH8Faz/+AMO23AFegHoUFynR7U0ouGgYDljGkkj35e0asbSDA==} resolution: {integrity: sha512-ph/mUR/OwPtPkZ5rNHINxubpABn8fHnvJSdhXFrY/q6SKoaO11NZXgegRaiG4aL7O6Sz4LsZVw6Sm0Ae+GJmrg==}
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/extension-blockquote': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-blockquote': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-bold': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-bold': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-bullet-list': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-bullet-list': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-code': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-code': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-code-block': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-code-block': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-document': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-document': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-dropcursor': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-dropcursor': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-gapcursor': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-gapcursor': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-hard-break': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-hard-break': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-heading': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-heading': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-history': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-history': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-horizontal-rule': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12) '@tiptap/extension-horizontal-rule': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13)
'@tiptap/extension-italic': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-italic': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-list-item': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-list-item': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-ordered-list': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-ordered-list': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-paragraph': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-paragraph': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-strike': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-strike': 2.1.13(@tiptap/core@2.1.13)
'@tiptap/extension-text': 2.1.12(@tiptap/core@2.1.12) '@tiptap/extension-text': 2.1.13(@tiptap/core@2.1.13)
transitivePeerDependencies: transitivePeerDependencies:
- '@tiptap/pm' - '@tiptap/pm'
dev: false dev: false
/@tiptap/suggestion@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.12): /@tiptap/suggestion@2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13):
resolution: {integrity: sha512-rhlLWwVkOodBGRMK0mAmE34l2a+BqM2Y7q1ViuQRBhs/6sZ8d83O4hARHKVwqT5stY4i1l7d7PoemV3uAGI6+g==} resolution: {integrity: sha512-Y05TsiXTFAJ5SrfoV+21MAxig5UNbY0AVa03lQlh/yicTRPpIc6hgZzblB0uxDSYoj6+kaHE4MIZvPvhUD8BJQ==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.0 '@tiptap/core': ^2.0.0
'@tiptap/pm': ^2.0.0 '@tiptap/pm': ^2.0.0
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/pm': 2.1.12 '@tiptap/pm': 2.1.13
dev: false dev: false
/@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.1.0): /@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.1.0):
@ -3221,7 +3221,7 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001565 caniuse-lite: 1.0.30001565
electron-to-chromium: 1.4.597 electron-to-chromium: 1.4.599
node-releases: 2.0.13 node-releases: 2.0.13
update-browserslist-db: 1.0.13(browserslist@4.22.1) update-browserslist-db: 1.0.13(browserslist@4.22.1)
dev: true dev: true
@ -3601,8 +3601,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true dev: true
/electron-to-chromium@1.4.597: /electron-to-chromium@1.4.599:
resolution: {integrity: sha512-0XOQNqHhg2YgRVRUrS4M4vWjFCFIP2ETXcXe/0KIQBjXE9Cpy+tgzzYfuq6HGai3hWq0YywtG+5XK8fyG08EjA==} resolution: {integrity: sha512-FdLI0/h+PvShEqmBMnZCdbgabAuQiiM9Ph8hVGmPOR5GU1XXZgwLRCMogE63OrUxcDEOBlEMVYAgtkJjWFnhRA==}
dev: true dev: true
/emoji-regex@9.2.2: /emoji-regex@9.2.2:
@ -3655,7 +3655,7 @@ packages:
is-weakref: 1.0.2 is-weakref: 1.0.2
object-inspect: 1.13.1 object-inspect: 1.13.1
object-keys: 1.1.1 object-keys: 1.1.1
object.assign: 4.1.4 object.assign: 4.1.5
regexp.prototype.flags: 1.5.1 regexp.prototype.flags: 1.5.1
safe-array-concat: 1.0.1 safe-array-concat: 1.0.1
safe-regex-test: 1.0.0 safe-regex-test: 1.0.0
@ -4601,7 +4601,7 @@ packages:
dependencies: dependencies:
array-includes: 3.1.7 array-includes: 3.1.7
array.prototype.flat: 1.3.2 array.prototype.flat: 1.3.2
object.assign: 4.1.4 object.assign: 4.1.5
object.values: 1.1.7 object.values: 1.1.7
dev: true dev: true
@ -4939,8 +4939,8 @@ packages:
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dev: true dev: true
/object.assign@4.1.4: /object.assign@4.1.5:
resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dependencies: dependencies:
call-bind: 1.0.5 call-bind: 1.0.5
@ -6000,12 +6000,12 @@ packages:
'@popperjs/core': 2.11.8 '@popperjs/core': 2.11.8
dev: false dev: false
/tiptap-markdown@0.8.7(@tiptap/core@2.1.12): /tiptap-markdown@0.8.7(@tiptap/core@2.1.13):
resolution: {integrity: sha512-jHnAm/yyKSCGL4xh2/73PNMI0+sZ1qrmZAda2fMwtpVs9LMYi8aYPilJLn4mL5RNrALE6jx+KRmGsq3DGpvnaQ==} resolution: {integrity: sha512-jHnAm/yyKSCGL4xh2/73PNMI0+sZ1qrmZAda2fMwtpVs9LMYi8aYPilJLn4mL5RNrALE6jx+KRmGsq3DGpvnaQ==}
peerDependencies: peerDependencies:
'@tiptap/core': ^2.0.3 '@tiptap/core': ^2.0.3
dependencies: dependencies:
'@tiptap/core': 2.1.12(@tiptap/pm@2.1.12) '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@types/markdown-it': 12.2.3 '@types/markdown-it': 12.2.3
markdown-it: 13.0.2 markdown-it: 13.0.2
markdown-it-task-lists: 2.1.1 markdown-it-task-lists: 2.1.1

78
src-tauri/Cargo.lock generated
View File

@ -253,7 +253,7 @@ dependencies = [
"futures-lite 2.0.1", "futures-lite 2.0.1",
"parking", "parking",
"polling 3.3.1", "polling 3.3.1",
"rustix 0.38.25", "rustix 0.38.26",
"slab", "slab",
"tracing", "tracing",
"windows-sys 0.52.0", "windows-sys 0.52.0",
@ -292,7 +292,7 @@ dependencies = [
"cfg-if", "cfg-if",
"event-listener 3.1.0", "event-listener 3.1.0",
"futures-lite 1.13.0", "futures-lite 1.13.0",
"rustix 0.38.25", "rustix 0.38.26",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
@ -319,7 +319,7 @@ dependencies = [
"cfg-if", "cfg-if",
"futures-core", "futures-core",
"futures-io", "futures-io",
"rustix 0.38.25", "rustix 0.38.26",
"signal-hook-registry", "signal-hook-registry",
"slab", "slab",
"windows-sys 0.48.0", "windows-sys 0.48.0",
@ -382,9 +382,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]] [[package]]
name = "atomic-write-file" name = "atomic-write-file"
version = "0.1.1" version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ae364a6c1301604bbc6dfbf8c385c47ff82301dd01eef506195a029196d8d04" checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436"
dependencies = [ dependencies = [
"nix 0.27.1", "nix 0.27.1",
"rand 0.8.5", "rand 0.8.5",
@ -890,9 +890,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.9.3" version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
dependencies = [ dependencies = [
"core-foundation-sys", "core-foundation-sys",
"libc", "libc",
@ -900,9 +900,9 @@ dependencies = [
[[package]] [[package]]
name = "core-foundation-sys" name = "core-foundation-sys"
version = "0.8.4" version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
[[package]] [[package]]
name = "core-graphics" name = "core-graphics"
@ -932,9 +932,9 @@ dependencies = [
[[package]] [[package]]
name = "core-graphics-types" name = "core-graphics-types"
version = "0.1.2" version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"core-foundation", "core-foundation",
@ -1419,7 +1419,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"rustix 0.38.25", "rustix 0.38.26",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
@ -2643,9 +2643,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]] [[package]]
name = "linux-raw-sys" name = "linux-raw-sys"
version = "0.4.11" version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
[[package]] [[package]]
name = "lock_api" name = "lock_api"
@ -3640,7 +3640,7 @@ dependencies = [
"cfg-if", "cfg-if",
"concurrent-queue", "concurrent-queue",
"pin-project-lite", "pin-project-lite",
"rustix 0.38.25", "rustix 0.38.26",
"tracing", "tracing",
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
@ -4052,15 +4052,15 @@ dependencies = [
[[package]] [[package]]
name = "rustix" name = "rustix"
version = "0.38.25" version = "0.38.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a"
dependencies = [ dependencies = [
"bitflags 2.4.1", "bitflags 2.4.1",
"errno", "errno",
"libc", "libc",
"linux-raw-sys 0.4.11", "linux-raw-sys 0.4.12",
"windows-sys 0.48.0", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -5066,7 +5066,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-autostart" name = "tauri-plugin-autostart"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"auto-launch", "auto-launch",
"log", "log",
@ -5079,7 +5079,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-cli" name = "tauri-plugin-cli"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"clap", "clap",
"log", "log",
@ -5092,7 +5092,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-clipboard-manager" name = "tauri-plugin-clipboard-manager"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"arboard", "arboard",
"log", "log",
@ -5106,7 +5106,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-dialog" name = "tauri-plugin-dialog"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"glib 0.16.9", "glib 0.16.9",
"log", "log",
@ -5123,7 +5123,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-fs" name = "tauri-plugin-fs"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"glob", "glob",
@ -5136,7 +5136,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-http" name = "tauri-plugin-http"
version = "2.0.0-alpha.5" version = "2.0.0-alpha.5"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"data-url", "data-url",
"glob", "glob",
@ -5153,7 +5153,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-notification" name = "tauri-plugin-notification"
version = "2.0.0-alpha.5" version = "2.0.0-alpha.5"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"log", "log",
"notify-rust", "notify-rust",
@ -5171,7 +5171,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-os" name = "tauri-plugin-os"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"gethostname 0.4.3", "gethostname 0.4.3",
"log", "log",
@ -5187,7 +5187,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-process" name = "tauri-plugin-process"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"tauri", "tauri",
] ]
@ -5195,7 +5195,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-shell" name = "tauri-plugin-shell"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"encoding_rs", "encoding_rs",
"log", "log",
@ -5212,7 +5212,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-sql" name = "tauri-plugin-sql"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"log", "log",
@ -5228,7 +5228,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-store" name = "tauri-plugin-store"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -5256,7 +5256,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-updater" name = "tauri-plugin-updater"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"base64", "base64",
"dirs-next", "dirs-next",
@ -5282,7 +5282,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-upload" name = "tauri-plugin-upload"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"log", "log",
@ -5299,7 +5299,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-window-state" name = "tauri-plugin-window-state"
version = "2.0.0-alpha.4" version = "2.0.0-alpha.4"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#2e2c0a1b958fcbc7de855ef1d305b11855f2eb8e" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#e7c72c9816d14a218e702dd233a6cfec957c2ee6"
dependencies = [ dependencies = [
"bincode", "bincode",
"bitflags 2.4.1", "bitflags 2.4.1",
@ -5407,7 +5407,7 @@ dependencies = [
"cfg-if", "cfg-if",
"fastrand 2.0.1", "fastrand 2.0.1",
"redox_syscall 0.4.1", "redox_syscall 0.4.1",
"rustix 0.38.25", "rustix 0.38.26",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
@ -6655,18 +6655,18 @@ dependencies = [
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
version = "0.7.26" version = "0.7.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" checksum = "f43de342578a3a14a9314a2dab1942cbfcbe5686e1f91acdc513058063eafe18"
dependencies = [ dependencies = [
"zerocopy-derive", "zerocopy-derive",
] ]
[[package]] [[package]]
name = "zerocopy-derive" name = "zerocopy-derive"
version = "0.7.26" version = "0.7.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" checksum = "e1012d89e3acb79fad7a799ce96866cfb8098b74638465ea1b1533d35900ca90"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View File

@ -14,7 +14,6 @@ import { AppLayout } from '@shared/layouts/app';
import { AuthLayout } from '@shared/layouts/auth'; import { AuthLayout } from '@shared/layouts/auth';
import { NewLayout } from '@shared/layouts/new'; import { NewLayout } from '@shared/layouts/new';
import { NoteLayout } from '@shared/layouts/note'; import { NoteLayout } from '@shared/layouts/note';
import { OnboardingLayout } from '@shared/layouts/onboarding';
import { SettingsLayout } from '@shared/layouts/settings'; import { SettingsLayout } from '@shared/layouts/settings';
import './app.css'; import './app.css';
@ -197,11 +196,6 @@ export default function App() {
}, },
{ {
path: 'onboarding', path: 'onboarding',
element: <OnboardingLayout />,
errorElement: <ErrorScreen />,
children: [
{
path: '',
async lazy() { async lazy() {
const { OnboardingScreen } = await import('@app/auth/onboarding'); const { OnboardingScreen } = await import('@app/auth/onboarding');
return { Component: OnboardingScreen }; return { Component: OnboardingScreen };
@ -214,7 +208,33 @@ export default function App() {
return { Component: FollowScreen }; return { Component: FollowScreen };
}, },
}, },
], {
path: 'finish',
async lazy() {
const { FinishScreen } = await import('@app/auth/finish');
return { Component: FinishScreen };
},
},
{
path: 'tutorials/note',
async lazy() {
const { TutorialNoteScreen } = await import('@app/auth/tutorials/note');
return { Component: TutorialNoteScreen };
},
},
{
path: 'tutorials/widget',
async lazy() {
const { TutorialWidgetScreen } = await import('@app/auth/tutorials/widget');
return { Component: TutorialWidgetScreen };
},
},
{
path: 'tutorials/posting',
async lazy() {
const { TutorialPostingScreen } = await import('@app/auth/tutorials/posting');
return { Component: TutorialPostingScreen };
},
}, },
], ],
}, },

34
src/app/auth/finish.tsx Normal file
View File

@ -0,0 +1,34 @@
import { Link } from 'react-router-dom';
export function FinishScreen() {
return (
<div className="flex h-full w-full items-center justify-center">
<div className="mx-auto flex w-full max-w-md flex-col gap-10">
<div className="text-center">
<img src="/icon.png" alt="Lume's logo" className="mx-auto mb-1 h-auto w-16" />
<h1 className="text-2xl font-light">
Yo, you&apos;re ready to use <span className="font-bold">Lume</span>
</h1>
</div>
<div className="flex flex-col gap-2">
<Link
to="/auth/tutorials/note"
className="inline-flex h-11 w-full items-center justify-center rounded-lg bg-blue-500 font-medium text-white hover:bg-blue-600"
>
Start tutorial
</Link>
<Link
to="/"
className="inline-flex h-11 w-full items-center justify-center rounded-lg bg-neutral-100 font-medium hover:bg-neutral-200 dark:bg-neutral-900 dark:hover:bg-neutral-800"
>
Skip
</Link>
<p className="mt-2 text-center text-sm font-medium text-neutral-500 dark:text-neutral-600">
You need to restart app to make changes in previous step take effect or you
can continue with Lume default settings
</p>
</div>
</div>
</div>
);
}

View File

@ -189,7 +189,7 @@ export function ImportAccountScreen() {
<button <button
type="button" type="button"
onClick={changeAccount} onClick={changeAccount}
className="h-8 w-20 shrink-0 rounded-lg bg-neutral-200 text-sm font-medium hover:bg-neutral-300 dark:bg-neutral-800 dark:hover:bg-neutral-700" className="h-8 w-max shrink-0 rounded-lg bg-neutral-200 px-2.5 text-sm font-medium hover:bg-neutral-300 dark:bg-neutral-800 dark:hover:bg-neutral-700"
> >
Change Change
</button> </button>

View File

@ -18,8 +18,8 @@ export function OnboardingScreen() {
}); });
const next = () => { const next = () => {
if (!db.account.contacts) return navigate('/auth/onboarding/follow'); if (!db.account.contacts) return navigate('/auth/follow');
return navigate('/'); return navigate('/auth/finish');
}; };
const toggleOutbox = async () => { const toggleOutbox = async () => {

View File

@ -0,0 +1,91 @@
import { NDKEvent } from '@nostr-dev-kit/ndk';
import { Link } from 'react-router-dom';
import { useNDK } from '@libs/ndk/provider';
import { EditIcon, ReactionIcon, ReplyIcon, RepostIcon, ZapIcon } from '@shared/icons';
import { TextNote } from '@shared/notes';
export function TutorialNoteScreen() {
const { ndk } = useNDK();
const exampleEvent = new NDKEvent(ndk, {
id: 'a3527670dd9b178bf7c2a9ea673b63bc8bfe774942b196691145343623c45821',
pubkey: '04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9',
created_at: 1701355223,
kind: 1,
tags: [],
content: 'good morning nostr, stay humble and stack sats 🫡',
sig: '9e0bd67ec25598744f20bff0fe360fdf190c4240edb9eea260e50f77e07f94ea767ececcc6270819b7f64e5e7ca1fe20b4971f46dc120e6db43114557f3a6dae',
});
return (
<div className="flex h-full w-full select-text items-center justify-center">
<div className="mx-auto flex w-full max-w-md flex-col gap-10">
<div className="flex flex-col items-center gap-3">
<div className="inline-flex h-11 w-11 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<EditIcon className="h-5 w-5" />
</div>
<h1 className="text-2xl font-light">
What is a <span className="font-bold">Note?</span>
</h1>
</div>
<div className="flex flex-col gap-2">
<p className="px-3">
Posts on Nostr based Social Network client are usually called
&apos;Notes.&apos; Notes are arranged chronologically on the timeline and are
updated in real-time.
</p>
<p className="px-3 font-semibold">Here is one example:</p>
<TextNote event={exampleEvent} className="pointer-events-none my-2" />
<p className="px-3 font-semibold">Here are how you can interact with a note:</p>
<div className="flex flex-col gap-2 px-3">
<div className="inline-flex gap-3">
<div className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<ReplyIcon className="h-5 w-5 text-blue-500" />
</div>
<p>
Reply - Click on this button to reply to a note. It&apos;s also possible
to reply to replies, continuing the conversation like a thread.
</p>
</div>
<div className="inline-flex gap-3">
<div className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<ReactionIcon className="h-5 w-5 text-red-500" />
</div>
<p>Reaction - You can add reactions to the Note to express your concern.</p>
</div>
<div className="inline-flex gap-3">
<div className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<RepostIcon className="h-5 w-5 text-teal-500" />
</div>
<p>
Repost - You can share that note to your own timeline. You can also quote
them with your comments.
</p>
</div>
<div className="inline-flex gap-3">
<div className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<ZapIcon className="h-5 w-5 text-orange-500" />
</div>
<p>Zap - You can send tip in Bitcoin to that note owner with zero-fees</p>
</div>
</div>
<div className="mt-5 flex gap-2 px-3">
<Link
to="/auth/finish"
className="inline-flex h-9 w-full items-center justify-center rounded-lg bg-neutral-100 font-medium hover:bg-neutral-200 dark:bg-neutral-900 dark:hover:bg-neutral-800"
>
Back
</Link>
<Link
to="/auth/tutorials/widget"
className="inline-flex h-9 w-full items-center justify-center rounded-lg bg-blue-500 font-medium text-white hover:bg-blue-600"
>
Continue
</Link>
</div>
</div>
</div>
</div>
);
}

View File

@ -0,0 +1,3 @@
export function TutorialPostingScreen() {
return <div></div>;
}

View File

@ -0,0 +1,64 @@
import { Link } from 'react-router-dom';
import { BellIcon, HomeIcon, PlusIcon } from '@shared/icons';
export function TutorialWidgetScreen() {
return (
<div className="flex h-full w-full select-text items-center justify-center">
<div className="mx-auto flex w-full max-w-md flex-col gap-10">
<div className="flex flex-col items-center gap-3">
<div className="inline-flex h-11 w-11 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<HomeIcon className="h-5 w-5" />
</div>
<h1 className="text-2xl font-light">
The concept of <span className="font-bold">Widgets</span>
</h1>
</div>
<div className="flex flex-col gap-2 px-3">
<p>
Lume provides multiple widgets based on usage. You always can control what you
need to show on your Home.
</p>
<p className="font-semibold">Default widgets:</p>
<div className="inline-flex gap-3">
<div className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<HomeIcon className="h-5 w-5" />
</div>
<p>Newsfeed - You can view notes from accounts you follow.</p>
</div>
<div className="inline-flex gap-3">
<div className="inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<BellIcon className="h-5 w-5" />
</div>
<p>Notification - You can view all notifications related to your account.</p>
</div>
<p>
If you want to add more widget, you can click to this button on Home Screen.
</p>
<div className="flex h-24 w-full items-center justify-center rounded-lg bg-neutral-100 dark:bg-neutral-900">
<button
type="button"
className="inline-flex h-14 w-14 items-center justify-center rounded-full bg-neutral-200 text-neutral-900 hover:bg-neutral-300 dark:bg-neutral-800 dark:text-neutral-100 dark:hover:bg-neutral-700"
>
<PlusIcon className="h-5 w-5" />
</button>
</div>
<div className="mt-5 flex gap-2">
<Link
to="/auth/tutorials/note"
className="inline-flex h-9 w-full items-center justify-center rounded-lg bg-neutral-100 font-medium hover:bg-neutral-200 dark:bg-neutral-900 dark:hover:bg-neutral-800"
>
Back
</Link>
<Link
to="/auth/tutorials/posting"
className="inline-flex h-9 w-full items-center justify-center rounded-lg bg-blue-500 font-medium text-white hover:bg-blue-600"
>
Continue
</Link>
</div>
</div>
</div>
</div>
);
}

View File

@ -13,13 +13,13 @@ export function WelcomeScreen() {
<div className="flex flex-col gap-2 px-8"> <div className="flex flex-col gap-2 px-8">
<Link <Link
to="/auth/create" to="/auth/create"
className="inline-flex h-10 w-full items-center justify-center rounded-lg bg-blue-500 font-medium text-white hover:bg-blue-600" className="inline-flex h-11 w-full items-center justify-center rounded-lg bg-blue-500 font-medium text-white hover:bg-blue-600"
> >
Create new account Create new account
</Link> </Link>
<Link <Link
to="/auth/import" to="/auth/import"
className="inline-flex h-10 w-full items-center justify-center rounded-lg font-medium text-neutral-900 hover:bg-neutral-100 dark:text-neutral-100 dark:hover:bg-neutral-900" className="inline-flex h-11 w-full items-center justify-center rounded-lg font-medium text-neutral-900 hover:bg-neutral-100 dark:text-neutral-100 dark:hover:bg-neutral-900"
> >
Log in Log in
</Link> </Link>

View File

@ -116,17 +116,32 @@ export function ErrorScreen() {
</div> </div>
<div className="select-text text-lg font-medium text-blue-300"> <div className="select-text text-lg font-medium text-blue-300">
<p> <p>
While waiting for Lume&apos;s Devs to release the bug fixes, you always can use While waiting for Lume&apos;s Devs to release the bug fixes, you always
other Nostr clients with your account: can use other Nostr clients with your account:
</p> </p>
<div className="mt-2 flex flex-col gap-1 text-white"> <div className="mt-2 flex flex-col gap-1 text-white">
<a href="https://snort.social" className="hover:!underline"> <a
className="hover:!underline"
href="https://snort.social"
target="_blank"
rel="noreferrer"
>
snort.social snort.social
</a> </a>
<a href="https://primal.net" className="hover:!underline"> <a
className="hover:!underline"
href="https://primal.net"
target="_blank"
rel="noreferrer"
>
primal.net primal.net
</a> </a>
<a href="https://nostrudel.ninja" className="hover:!underline"> <a
className="hover:!underline"
href="https://nostrudel.ninja"
target="_blank"
rel="noreferrer"
>
nostrudel.ninja nostrudel.ninja
</a> </a>
</div> </div>

View File

@ -137,7 +137,7 @@ export function NewArticleScreen() {
<div className="group flex justify-between gap-2"> <div className="group flex justify-between gap-2">
<input <input
name="title" name="title"
className="h-9 flex-1 border-none bg-transparent text-2xl font-semibold text-neutral-900 shadow-none outline-none placeholder:text-neutral-400 dark:text-neutral-100 dark:placeholder:text-neutral-600" className="h-9 flex-1 border-none bg-transparent px-0 text-2xl font-semibold text-neutral-900 shadow-none outline-none placeholder:text-neutral-400 focus:border-none focus:outline-none focus:ring-0 dark:text-neutral-100 dark:placeholder:text-neutral-600"
placeholder="Untitled" placeholder="Untitled"
value={title} value={title}
onChange={(e) => setTitle(e.target.value)} onChange={(e) => setTitle(e.target.value)}

View File

@ -1,5 +0,0 @@
import { Outlet } from 'react-router-dom';
export function OnboardingLayout() {
return <Outlet />;
}

View File

@ -1,5 +1,6 @@
import { NDKEvent } from '@nostr-dev-kit/ndk'; import { NDKEvent } from '@nostr-dev-kit/ndk';
import { memo } from 'react'; import { memo } from 'react';
import { twMerge } from 'tailwind-merge';
import { ChildNote, NoteActions } from '@shared/notes'; import { ChildNote, NoteActions } from '@shared/notes';
import { User } from '@shared/user'; import { User } from '@shared/user';
@ -9,7 +10,7 @@ import { useNostr } from '@utils/hooks/useNostr';
import { useRichContent } from '@utils/hooks/useRichContent'; import { useRichContent } from '@utils/hooks/useRichContent';
import { useWidget } from '@utils/hooks/useWidget'; import { useWidget } from '@utils/hooks/useWidget';
export function TextNote({ event }: { event: NDKEvent }) { export function TextNote({ event, className }: { event: NDKEvent; className?: string }) {
const { parsedContent } = useRichContent(event.content); const { parsedContent } = useRichContent(event.content);
const { addWidget } = useWidget(); const { addWidget } = useWidget();
const { getEventThread } = useNostr(); const { getEventThread } = useNostr();
@ -17,7 +18,7 @@ export function TextNote({ event }: { event: NDKEvent }) {
const thread = getEventThread(event.tags); const thread = getEventThread(event.tags);
return ( return (
<div className="mb-3 h-min w-full px-3"> <div className={twMerge('mb-3 h-min w-full px-3', className)}>
<div className="relative flex flex-col gap-2 overflow-hidden rounded-xl bg-neutral-50 pt-3 dark:bg-neutral-950"> <div className="relative flex flex-col gap-2 overflow-hidden rounded-xl bg-neutral-50 pt-3 dark:bg-neutral-950">
<User pubkey={event.pubkey} time={event.created_at} eventId={event.id} /> <User pubkey={event.pubkey} time={event.created_at} eventId={event.id} />
{thread ? ( {thread ? (

View File

@ -207,7 +207,7 @@ export const User = memo(function User({
{user?.name || user?.display_name || user?.displayName} {user?.name || user?.display_name || user?.displayName}
</h3> </h3>
<p className="max-w-[10rem] truncate text-sm text-neutral-900 dark:text-neutral-100/70"> <p className="max-w-[10rem] truncate text-sm text-neutral-900 dark:text-neutral-100/70">
{user?.username || displayNpub(pubkey, 16)} {user?.nip05 || user?.username || displayNpub(pubkey, 16)}
</p> </p>
</div> </div>
</div> </div>