wip: polish

This commit is contained in:
reya 2023-10-18 08:43:31 +07:00
parent 7fa1e89dc8
commit 489ab6bd0b
17 changed files with 293 additions and 205 deletions

View File

@ -20,9 +20,9 @@
"dependencies": { "dependencies": {
"@evilmartians/harmony": "^1.1.0", "@evilmartians/harmony": "^1.1.0",
"@formkit/auto-animate": "^0.8.0", "@formkit/auto-animate": "^0.8.0",
"@getalby/sdk": "^2.4.0", "@getalby/sdk": "^2.5.0",
"@nostr-dev-kit/ndk": "^2.0.2", "@nostr-dev-kit/ndk": "^2.0.3",
"@nostr-dev-kit/ndk-cache-dexie": "^2.0.2", "@nostr-dev-kit/ndk-cache-dexie": "^2.0.3",
"@nostr-fetch/adapter-ndk": "^0.12.2", "@nostr-fetch/adapter-ndk": "^0.12.2",
"@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-alert-dialog": "^1.0.5",
"@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-avatar": "^1.0.4",
@ -61,21 +61,22 @@
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",
"light-bolt11-decoder": "^3.0.0", "light-bolt11-decoder": "^3.0.0",
"lru-cache": "^10.0.1", "lru-cache": "^10.0.1",
"media-chrome": "^1.4.3", "media-chrome": "^1.4.4",
"million": "^2.6.4", "million": "^2.6.4",
"minidenticons": "^4.2.0", "minidenticons": "^4.2.0",
"nostr-fetch": "^0.13.0", "nostr-fetch": "^0.13.0",
"nostr-tools": "^1.16.0", "nostr-tools": "^1.17.0",
"qrcode.react": "^3.1.0", "qrcode.react": "^3.1.0",
"re-resizable": "^6.9.11", "re-resizable": "^6.9.11",
"react": "^18.2.0", "react": "^18.2.0",
"react-currency-input-field": "^3.6.11", "react-currency-input-field": "^3.6.11",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hook-form": "^7.47.0", "react-hook-form": "^7.47.0",
"react-hotkeys-hook": "^4.4.1",
"react-markdown": "^8.0.7", "react-markdown": "^8.0.7",
"react-router-dom": "^6.16.0", "react-router-dom": "^6.17.0",
"react-string-replace": "^1.1.1", "react-string-replace": "^1.1.1",
"reactflow": "^11.9.3", "reactflow": "^11.9.4",
"remark-gfm": "^3.0.1", "remark-gfm": "^3.0.1",
"sonner": "^1.0.3", "sonner": "^1.0.3",
"tailwind-scrollbar": "^3.0.5", "tailwind-scrollbar": "^3.0.5",
@ -92,8 +93,8 @@
"@types/react": "^18.2.28", "@types/react": "^18.2.28",
"@types/react-dom": "^18.2.13", "@types/react-dom": "^18.2.13",
"@types/youtube-player": "^5.5.8", "@types/youtube-player": "^5.5.8",
"@typescript-eslint/eslint-plugin": "^6.7.5", "@typescript-eslint/eslint-plugin": "^6.8.0",
"@typescript-eslint/parser": "^6.7.5", "@typescript-eslint/parser": "^6.8.0",
"@vitejs/plugin-react-swc": "^3.4.0", "@vitejs/plugin-react-swc": "^3.4.0",
"autoprefixer": "^10.4.16", "autoprefixer": "^10.4.16",
"clsx": "^2.0.0", "clsx": "^2.0.0",

View File

@ -12,17 +12,17 @@ dependencies:
specifier: ^0.8.0 specifier: ^0.8.0
version: 0.8.0 version: 0.8.0
'@getalby/sdk': '@getalby/sdk':
specifier: ^2.4.0 specifier: ^2.5.0
version: 2.4.0 version: 2.5.0
'@nostr-dev-kit/ndk': '@nostr-dev-kit/ndk':
specifier: ^2.0.2 specifier: ^2.0.3
version: 2.0.2(typescript@5.2.2) version: 2.0.3(typescript@5.2.2)
'@nostr-dev-kit/ndk-cache-dexie': '@nostr-dev-kit/ndk-cache-dexie':
specifier: ^2.0.2 specifier: ^2.0.3
version: 2.0.2(typescript@5.2.2) version: 2.0.3(typescript@5.2.2)
'@nostr-fetch/adapter-ndk': '@nostr-fetch/adapter-ndk':
specifier: ^0.12.2 specifier: ^0.12.2
version: 0.12.2(@nostr-dev-kit/ndk@2.0.2)(nostr-fetch@0.13.0) version: 0.12.2(@nostr-dev-kit/ndk@2.0.3)(nostr-fetch@0.13.0)
'@radix-ui/react-alert-dialog': '@radix-ui/react-alert-dialog':
specifier: ^1.0.5 specifier: ^1.0.5
version: 1.0.5(@types/react-dom@18.2.13)(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) version: 1.0.5(@types/react-dom@18.2.13)(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
@ -135,8 +135,8 @@ dependencies:
specifier: ^10.0.1 specifier: ^10.0.1
version: 10.0.1 version: 10.0.1
media-chrome: media-chrome:
specifier: ^1.4.3 specifier: ^1.4.4
version: 1.4.3 version: 1.4.4
million: million:
specifier: ^2.6.4 specifier: ^2.6.4
version: 2.6.4 version: 2.6.4
@ -147,8 +147,8 @@ dependencies:
specifier: ^0.13.0 specifier: ^0.13.0
version: 0.13.0 version: 0.13.0
nostr-tools: nostr-tools:
specifier: ^1.16.0 specifier: ^1.17.0
version: 1.16.0(typescript@5.2.2) version: 1.17.0(typescript@5.2.2)
qrcode.react: qrcode.react:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0(react@18.2.0) version: 3.1.0(react@18.2.0)
@ -167,18 +167,21 @@ dependencies:
react-hook-form: react-hook-form:
specifier: ^7.47.0 specifier: ^7.47.0
version: 7.47.0(react@18.2.0) version: 7.47.0(react@18.2.0)
react-hotkeys-hook:
specifier: ^4.4.1
version: 4.4.1(react-dom@18.2.0)(react@18.2.0)
react-markdown: react-markdown:
specifier: ^8.0.7 specifier: ^8.0.7
version: 8.0.7(@types/react@18.2.28)(react@18.2.0) version: 8.0.7(@types/react@18.2.28)(react@18.2.0)
react-router-dom: react-router-dom:
specifier: ^6.16.0 specifier: ^6.17.0
version: 6.16.0(react-dom@18.2.0)(react@18.2.0) version: 6.17.0(react-dom@18.2.0)(react@18.2.0)
react-string-replace: react-string-replace:
specifier: ^1.1.1 specifier: ^1.1.1
version: 1.1.1 version: 1.1.1
reactflow: reactflow:
specifier: ^11.9.3 specifier: ^11.9.4
version: 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) version: 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
remark-gfm: remark-gfm:
specifier: ^3.0.1 specifier: ^3.0.1
version: 3.0.1 version: 3.0.1
@ -224,11 +227,11 @@ devDependencies:
specifier: ^5.5.8 specifier: ^5.5.8
version: 5.5.8 version: 5.5.8
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^6.7.5 specifier: ^6.8.0
version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/parser': '@typescript-eslint/parser':
specifier: ^6.7.5 specifier: ^6.8.0
version: 6.7.5(eslint@8.51.0)(typescript@5.2.2) version: 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@vitejs/plugin-react-swc': '@vitejs/plugin-react-swc':
specifier: ^3.4.0 specifier: ^3.4.0
version: 3.4.0(vite@4.4.11) version: 3.4.0(vite@4.4.11)
@ -845,8 +848,8 @@ packages:
resolution: {integrity: sha512-G8f7489ka0mWyi+1IEZT+xgIwcpWtRMmE2x+IrVoQ+KM1cP6VDj/TbujZjwxdb0P8w8b16/qBfViRmydbYHwMw==} resolution: {integrity: sha512-G8f7489ka0mWyi+1IEZT+xgIwcpWtRMmE2x+IrVoQ+KM1cP6VDj/TbujZjwxdb0P8w8b16/qBfViRmydbYHwMw==}
dev: false dev: false
/@getalby/sdk@2.4.0: /@getalby/sdk@2.5.0:
resolution: {integrity: sha512-aIGNwLRF9coj6koxfq7P4GtFZbFjQbnIheix39x9176PwFw4dXOdGXHPXnqioJTmeq80y+vX1yd+u/f03YGoeg==} resolution: {integrity: sha512-MRLgI6WxCCLgrar+qDqm/UhKs+V6yXzNm4y1bJRAuN72nkKT+TjTJHCmk9GjTngR3FrOfLbeMsPwBxCmbvfrLQ==}
engines: {node: '>=14'} engines: {node: '>=14'}
dependencies: dependencies:
crypto-js: 4.1.1 crypto-js: 4.1.1
@ -947,21 +950,21 @@ packages:
'@nodelib/fs.scandir': 2.1.5 '@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0 fastq: 1.15.0
/@nostr-dev-kit/ndk-cache-dexie@2.0.2(typescript@5.2.2): /@nostr-dev-kit/ndk-cache-dexie@2.0.3(typescript@5.2.2):
resolution: {integrity: sha512-v6dq82Gzw/AoDMtkjCeTg+gx9n6sX3xReaMpIUbKL5W+E7z1lqnR0RmYkeNxUhd7Tlg0FQ+Ywqq7nZs+UmGDEA==} resolution: {integrity: sha512-+hSskmdo6GNp/wghCG1WRnm0HGipoJSRCOPeGHSRoUnwUpXlA9NobAjI5XOakrBGKhkWOQpsUgumHGADUX8oAQ==}
dependencies: dependencies:
'@nostr-dev-kit/ndk': 2.0.2(typescript@5.2.2) '@nostr-dev-kit/ndk': 2.0.3(typescript@5.2.2)
debug: 4.3.4 debug: 4.3.4
dexie: 3.2.4 dexie: 3.2.4
nostr-tools: 1.16.0(typescript@5.2.2) nostr-tools: 1.17.0(typescript@5.2.2)
typescript-lru-cache: 2.0.0 typescript-lru-cache: 2.0.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
dev: false dev: false
/@nostr-dev-kit/ndk@2.0.2(typescript@5.2.2): /@nostr-dev-kit/ndk@2.0.3(typescript@5.2.2):
resolution: {integrity: sha512-EwaOJVS0FOCXlIffiVceKrK+QtbaRTG6QYdoQchMAe+ag2C3jl7nAoDTWlixv/WgJOFl4KPQkS8r0sEkGmXsjQ==} resolution: {integrity: sha512-rKIJBIU0dZHaXwj1TY18VSLYsoIe1aQ7TAxkH3WFx3lGTXCz+nlGh5bsyvgMBdbyb0iecdjsaKqBRpEWMzYC9g==}
dependencies: dependencies:
'@noble/hashes': 1.3.2 '@noble/hashes': 1.3.2
'@noble/secp256k1': 2.0.0 '@noble/secp256k1': 2.0.0
@ -970,7 +973,7 @@ packages:
eventemitter3: 5.0.1 eventemitter3: 5.0.1
light-bolt11-decoder: 3.0.0 light-bolt11-decoder: 3.0.0
node-fetch: 3.3.2 node-fetch: 3.3.2
nostr-tools: 1.16.0(typescript@5.2.2) nostr-tools: 1.17.0(typescript@5.2.2)
typescript-lru-cache: 2.0.0 typescript-lru-cache: 2.0.0
utf8-buffer: 1.0.0 utf8-buffer: 1.0.0
websocket-polyfill: 0.0.3 websocket-polyfill: 0.0.3
@ -979,13 +982,13 @@ packages:
- typescript - typescript
dev: false dev: false
/@nostr-fetch/adapter-ndk@0.12.2(@nostr-dev-kit/ndk@2.0.2)(nostr-fetch@0.13.0): /@nostr-fetch/adapter-ndk@0.12.2(@nostr-dev-kit/ndk@2.0.3)(nostr-fetch@0.13.0):
resolution: {integrity: sha512-+7EVuxS5DDZvNo6qbfFp7xRHwIyjyi36hYkiQFDjbQ4gX5LKo9RIPB1P+1XGkOSDFshypTbovZCaFunscJ/zhQ==} resolution: {integrity: sha512-+7EVuxS5DDZvNo6qbfFp7xRHwIyjyi36hYkiQFDjbQ4gX5LKo9RIPB1P+1XGkOSDFshypTbovZCaFunscJ/zhQ==}
peerDependencies: peerDependencies:
'@nostr-dev-kit/ndk': ^0.7.5 '@nostr-dev-kit/ndk': ^0.7.5
nostr-fetch: ^0.12.2 nostr-fetch: ^0.12.2
dependencies: dependencies:
'@nostr-dev-kit/ndk': 2.0.2(typescript@5.2.2) '@nostr-dev-kit/ndk': 2.0.3(typescript@5.2.2)
'@nostr-fetch/kernel': 0.12.2 '@nostr-fetch/kernel': 0.12.2
nostr-fetch: 0.13.0 nostr-fetch: 0.13.0
dev: false dev: false
@ -1704,13 +1707,13 @@ packages:
'@babel/runtime': 7.23.2 '@babel/runtime': 7.23.2
dev: false dev: false
/@reactflow/background@11.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /@reactflow/background@11.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-m3MR25ufbrDkZI2Yi7pHX5uewVpiaaVM5px35pk2v3qdG68adqHOgJjncUOpGiJpc3rDwt4mqmW1V7RjBqNv6Q==} resolution: {integrity: sha512-bgwvqWxF09chwmdkyClpYEMaewBspdwjgLbbFlLf4SpWPFMYyuvCBQrcISsvy/EDEWO9i3Uj9ktgGAhvtSQsmA==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
dependencies: dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4 classcat: 5.0.4
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)
@ -1720,13 +1723,13 @@ packages:
- immer - immer
dev: false dev: false
/@reactflow/controls@11.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /@reactflow/controls@11.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-UTsfHE+PhgWrCZN4GUOTRU/3l8dGSyR2KslmgqV7mVNsh6EuS2cxboRczjpcIc8lF0EH+7QxLGeXSH42GWCcOQ==} resolution: {integrity: sha512-x6e5p9iHjC6gd+4SoZ3DOOp0F1MefGKQ8hT6yPVdqxfo1+rV2WhrWvrX/MCoEu12Dp7457LdLfa0giy3aho8tQ==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
dependencies: dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4 classcat: 5.0.4
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)
@ -1736,8 +1739,8 @@ packages:
- immer - immer
dev: false dev: false
/@reactflow/core@11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /@reactflow/core@11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-45o8X1sjF48wSWALHybbLoWF6yo9SARgJpMKm96J8ZL8mrNhqSjll77sLRJg6zQ+VKdDwotEN30jp5eY6i28tw==} resolution: {integrity: sha512-Ko7nKPOYalwDTTbRHi2+QXDiidSAcpUzGN3G+0B+QysLZkcaPCkpkMjjHiDC4c/Z1BJBzs1FRJg/T6BXaBnYkg==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
@ -1758,13 +1761,13 @@ packages:
- immer - immer
dev: false dev: false
/@reactflow/minimap@11.7.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /@reactflow/minimap@11.7.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-u620uYwjmA5tJ/4p+F/0kyjNojvV0axTMSw87d/CCDij96m+2/drwqMW+BE8XHEqjG0c1HyplrkXQ3WhGu6ZaA==} resolution: {integrity: sha512-Jo1R+uDey9IV7O2s3m0gK2+cZpg9M8hq2EZJb3NGfOSzMAPhj3mby0fNJIgTzycreuht0TpA51c2YfjGI3YIOw==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
dependencies: dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@types/d3-selection': 3.0.7 '@types/d3-selection': 3.0.7
'@types/d3-zoom': 3.0.5 '@types/d3-zoom': 3.0.5
classcat: 5.0.4 classcat: 5.0.4
@ -1778,13 +1781,13 @@ packages:
- immer - immer
dev: false dev: false
/@reactflow/node-resizer@2.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /@reactflow/node-resizer@2.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-x1TXN4YZhBI1LxNegVsE51emUg1rf4rBgvNL8Tzj0xsKkD/av4DOzRizQ3xAGgk0joPrsOTiGiP511m/PWjsew==} resolution: {integrity: sha512-+p271/hAsM5M1+RQTWW/02pbNkCHeGXwxGimIlL1tMIagyuko0NX2vOz2B8jxJnPKlF09Wj18BcXBNUm3nDcSg==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
dependencies: dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4 classcat: 5.0.4
d3-drag: 3.0.0 d3-drag: 3.0.0
d3-selection: 3.0.0 d3-selection: 3.0.0
@ -1796,13 +1799,13 @@ packages:
- immer - immer
dev: false dev: false
/@reactflow/node-toolbar@1.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /@reactflow/node-toolbar@1.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-juNFBLZgC+KOYpVaQFTkSQTDf4hYK7WAagiQQ4Dw0IUcLaMY3TA31OLP6X6gMG73YGKFmkgrDwi0ZDB0jpMqdA==} resolution: {integrity: sha512-TfcmpXHRBb2mUfzKGjburiU6FWqRME9pPFs1OwIC1z5e9BjupQhNDEKEk8XHi7PKL/mAiDfwuGXaM1BVVFuPqw==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
dependencies: dependencies:
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
classcat: 5.0.4 classcat: 5.0.4
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)
@ -1840,8 +1843,8 @@ packages:
type-fest: 2.19.0 type-fest: 2.19.0
dev: false dev: false
/@remix-run/router@1.9.0: /@remix-run/router@1.10.0:
resolution: {integrity: sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==} resolution: {integrity: sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dev: false dev: false
@ -2797,8 +2800,8 @@ packages:
resolution: {integrity: sha512-WU6l9UyIp1TKEK3xN8K5Y1nZpP4FTnrz4ArAPjQknReNNkN9UeLbmAuFu2F69YthLkLkOAMWi9O3a6kJCIWH5g==} resolution: {integrity: sha512-WU6l9UyIp1TKEK3xN8K5Y1nZpP4FTnrz4ArAPjQknReNNkN9UeLbmAuFu2F69YthLkLkOAMWi9O3a6kJCIWH5g==}
dev: true dev: true
/@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@ -2809,11 +2812,11 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@eslint-community/regexpp': 4.9.1 '@eslint-community/regexpp': 4.9.1
'@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/scope-manager': 6.7.5 '@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.7.5 '@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4 debug: 4.3.4
eslint: 8.51.0 eslint: 8.51.0
graphemer: 1.4.0 graphemer: 1.4.0
@ -2826,8 +2829,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2): /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies: peerDependencies:
eslint: ^7.0.0 || ^8.0.0 eslint: ^7.0.0 || ^8.0.0
@ -2836,10 +2839,10 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/scope-manager': 6.7.5 '@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/types': 6.7.5 '@typescript-eslint/types': 6.8.0
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
'@typescript-eslint/visitor-keys': 6.7.5 '@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4 debug: 4.3.4
eslint: 8.51.0 eslint: 8.51.0
typescript: 5.2.2 typescript: 5.2.2
@ -2847,16 +2850,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/scope-manager@6.7.5: /@typescript-eslint/scope-manager@6.8.0:
resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 6.7.5 '@typescript-eslint/types': 6.8.0
'@typescript-eslint/visitor-keys': 6.7.5 '@typescript-eslint/visitor-keys': 6.8.0
dev: true dev: true
/@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies: peerDependencies:
eslint: ^7.0.0 || ^8.0.0 eslint: ^7.0.0 || ^8.0.0
@ -2865,8 +2868,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
'@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2)
debug: 4.3.4 debug: 4.3.4
eslint: 8.51.0 eslint: 8.51.0
ts-api-utils: 1.0.3(typescript@5.2.2) ts-api-utils: 1.0.3(typescript@5.2.2)
@ -2875,13 +2878,13 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/types@6.7.5: /@typescript-eslint/types@6.8.0:
resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
dev: true dev: true
/@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2): /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2):
resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -2889,8 +2892,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/types': 6.7.5 '@typescript-eslint/types': 6.8.0
'@typescript-eslint/visitor-keys': 6.7.5 '@typescript-eslint/visitor-keys': 6.8.0
debug: 4.3.4 debug: 4.3.4
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
@ -2901,8 +2904,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2):
resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies: peerDependencies:
eslint: ^7.0.0 || ^8.0.0 eslint: ^7.0.0 || ^8.0.0
@ -2910,9 +2913,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0)
'@types/json-schema': 7.0.13 '@types/json-schema': 7.0.13
'@types/semver': 7.5.3 '@types/semver': 7.5.3
'@typescript-eslint/scope-manager': 6.7.5 '@typescript-eslint/scope-manager': 6.8.0
'@typescript-eslint/types': 6.7.5 '@typescript-eslint/types': 6.8.0
'@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2)
eslint: 8.51.0 eslint: 8.51.0
semver: 7.5.4 semver: 7.5.4
transitivePeerDependencies: transitivePeerDependencies:
@ -2920,11 +2923,11 @@ packages:
- typescript - typescript
dev: true dev: true
/@typescript-eslint/visitor-keys@6.7.5: /@typescript-eslint/visitor-keys@6.8.0:
resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==}
engines: {node: ^16.0.0 || >=18.0.0} engines: {node: ^16.0.0 || >=18.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 6.7.5 '@typescript-eslint/types': 6.8.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
dev: true dev: true
@ -3162,12 +3165,12 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001549 caniuse-lite: 1.0.30001549
electron-to-chromium: 1.4.554 electron-to-chromium: 1.4.556
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)
/bufferutil@4.0.7: /bufferutil@4.0.8:
resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'} engines: {node: '>=6.14.2'}
requiresBuild: true requiresBuild: true
dependencies: dependencies:
@ -3564,8 +3567,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true dev: true
/electron-to-chromium@1.4.554: /electron-to-chromium@1.4.556:
resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==} resolution: {integrity: sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ==}
/emoji-regex@9.2.2: /emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
@ -3615,7 +3618,7 @@ packages:
is-string: 1.0.7 is-string: 1.0.7
is-typed-array: 1.1.12 is-typed-array: 1.1.12
is-weakref: 1.0.2 is-weakref: 1.0.2
object-inspect: 1.12.3 object-inspect: 1.13.0
object-keys: 1.1.1 object-keys: 1.1.1
object.assign: 4.1.4 object.assign: 4.1.4
regexp.prototype.flags: 1.5.1 regexp.prototype.flags: 1.5.1
@ -4880,8 +4883,8 @@ packages:
resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
dev: false dev: false
/media-chrome@1.4.3: /media-chrome@1.4.4:
resolution: {integrity: sha512-VpFqCOu2FLULW6TX4sluo44AolJXryHxr85UBdO+IuOltgYPuf7Lgp1F3OqJeRIeO8874d5mri/6xmI22CO9yA==} resolution: {integrity: sha512-L3EImWE2ft3dEXnku7mwEl71L8GWFvsnqQQsmtlbuLqekCkIACjL1KjLErReALB9JmrY19ffB4GeGZjLZDwALg==}
dev: false dev: false
/merge-stream@2.0.0: /merge-stream@2.0.0:
@ -5261,8 +5264,8 @@ packages:
'@scure/bip39': 1.2.1 '@scure/bip39': 1.2.1
dev: false dev: false
/nostr-tools@1.16.0(typescript@5.2.2): /nostr-tools@1.17.0(typescript@5.2.2):
resolution: {integrity: sha512-sx/aOl0gmkeHVoIVbyOhEQhzF88NsrBXMC8bsjhPASqA6oZ8uSOAyEGgRLMfC3SKgzQD5Gr6KvDoAahaD6xKcg==} resolution: {integrity: sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==}
peerDependencies: peerDependencies:
typescript: '>=5.0.0' typescript: '>=5.0.0'
peerDependenciesMeta: peerDependenciesMeta:
@ -5293,8 +5296,8 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
/object-inspect@1.12.3: /object-inspect@1.13.0:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==}
dev: true dev: true
/object-keys@1.1.1: /object-keys@1.1.1:
@ -5820,6 +5823,16 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/react-hotkeys-hook@4.4.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-sClBMBioFEgFGYLTWWRKvhxcCx1DRznd+wkFHwQZspnRBkHTgruKIHptlK/U/2DPX8BhHoRGzpMVWUXMmdZlmw==}
peerDependencies:
react: '>=16.8.1'
react-dom: '>=16.8.1'
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/react-is@16.13.1: /react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@ -5846,7 +5859,7 @@ packages:
remark-parse: 10.0.2 remark-parse: 10.0.2
remark-rehype: 10.1.0 remark-rehype: 10.1.0
space-separated-tokens: 2.0.2 space-separated-tokens: 2.0.2
style-to-object: 0.4.3 style-to-object: 0.4.4
unified: 10.1.2 unified: 10.1.2
unist-util-visit: 4.1.2 unist-util-visit: 4.1.2
vfile: 5.3.7 vfile: 5.3.7
@ -5889,26 +5902,26 @@ packages:
use-sidecar: 1.1.2(@types/react@18.2.28)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.28)(react@18.2.0)
dev: false dev: false
/react-router-dom@6.16.0(react-dom@18.2.0)(react@18.2.0): /react-router-dom@6.17.0(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==} resolution: {integrity: sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
react: '>=16.8' react: '>=16.8'
react-dom: '>=16.8' react-dom: '>=16.8'
dependencies: dependencies:
'@remix-run/router': 1.9.0 '@remix-run/router': 1.10.0
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)
react-router: 6.16.0(react@18.2.0) react-router: 6.17.0(react@18.2.0)
dev: false dev: false
/react-router@6.16.0(react@18.2.0): /react-router@6.17.0(react@18.2.0):
resolution: {integrity: sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==} resolution: {integrity: sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
peerDependencies: peerDependencies:
react: '>=16.8' react: '>=16.8'
dependencies: dependencies:
'@remix-run/router': 1.9.0 '@remix-run/router': 1.10.0
react: 18.2.0 react: 18.2.0
dev: false dev: false
@ -5941,18 +5954,18 @@ packages:
loose-envify: 1.4.0 loose-envify: 1.4.0
dev: false dev: false
/reactflow@11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0): /reactflow@11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-GiIo20Vgy1U4h1NlLyQChWYgsl2OQkEgKHjokyQsdmm1nidywTr0n94O6w97ixLljKzJynTMjDdWP0p8xkq6NQ==} resolution: {integrity: sha512-IHAKBkJngNvU9y1vZ5Nw9rvA3Z+zc9geTgQQIi9qq9Y9knGLlDDr9KfsjbFMew9AycAAgVg8TvBEakF4IT5lqg==}
peerDependencies: peerDependencies:
react: '>=17' react: '>=17'
react-dom: '>=17' react-dom: '>=17'
dependencies: dependencies:
'@reactflow/background': 11.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/background': 11.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/controls': 11.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/controls': 11.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/core': 11.9.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/core': 11.9.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/minimap': 11.7.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/minimap': 11.7.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/node-resizer': 2.2.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/node-resizer': 2.2.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
'@reactflow/node-toolbar': 1.3.3(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0) '@reactflow/node-toolbar': 1.3.4(@types/react@18.2.28)(react-dom@18.2.0)(react@18.2.0)
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)
transitivePeerDependencies: transitivePeerDependencies:
@ -6165,7 +6178,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
object-inspect: 1.12.3 object-inspect: 1.13.0
dev: true dev: true
/signal-exit@3.0.7: /signal-exit@3.0.7:
@ -6285,8 +6298,8 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/style-to-object@0.4.3: /style-to-object@0.4.4:
resolution: {integrity: sha512-RP9icVx0g3Pt0CyNiC2qvBkqMTHD5uBVC2XYcSr/ag8QWKApx/oXEh2ehMGSyzkjK0+ySkukMuO+mz+DNQq57Q==} resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==}
dependencies: dependencies:
inline-style-parser: 0.1.1 inline-style-parser: 0.1.1
dev: false dev: false
@ -6809,7 +6822,7 @@ packages:
resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==}
engines: {node: '>=4.0.0'} engines: {node: '>=4.0.0'}
dependencies: dependencies:
bufferutil: 4.0.7 bufferutil: 4.0.8
debug: 2.6.9 debug: 2.6.9
es5-ext: 0.10.62 es5-ext: 0.10.62
typedarray-to-buffer: 3.1.5 typedarray-to-buffer: 3.1.5

68
src-tauri/Cargo.lock generated
View File

@ -193,9 +193,9 @@ dependencies = [
[[package]] [[package]]
name = "async-executor" name = "async-executor"
version = "1.5.4" version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c1da3ae8dabd9c00f453a329dfe1fb28da3c0a72e2478cdcd93171740c20499" checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0"
dependencies = [ dependencies = [
"async-lock", "async-lock",
"async-task", "async-task",
@ -300,9 +300,9 @@ checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921"
[[package]] [[package]]
name = "async-trait" name = "async-trait"
version = "0.1.73" version = "0.1.74"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -414,9 +414,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.4.0" version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
dependencies = [ dependencies = [
"serde", "serde",
] ]
@ -3055,7 +3055,7 @@ version = "0.10.57"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
dependencies = [ dependencies = [
"bitflags 2.4.0", "bitflags 2.4.1",
"cfg-if", "cfg-if",
"foreign-types 0.3.2", "foreign-types 0.3.2",
"libc", "libc",
@ -3688,13 +3688,13 @@ dependencies = [
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.10.1" version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aaac441002f822bc9705a681810a4dd2963094b9ca0ddc41cb963a4c189189ea" checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
"regex-automata 0.4.2", "regex-automata 0.4.3",
"regex-syntax 0.8.2", "regex-syntax 0.8.2",
] ]
@ -3709,9 +3709,9 @@ dependencies = [
[[package]] [[package]]
name = "regex-automata" name = "regex-automata"
version = "0.4.2" version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5011c7e263a695dc8ca064cddb722af1be54e517a280b12a5356f98366899e5d" checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
@ -3867,7 +3867,7 @@ version = "0.38.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed"
dependencies = [ dependencies = [
"bitflags 2.4.0", "bitflags 2.4.1",
"errno", "errno",
"libc", "libc",
"linux-raw-sys 0.4.10", "linux-raw-sys 0.4.10",
@ -4481,7 +4481,7 @@ checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db"
dependencies = [ dependencies = [
"atoi", "atoi",
"base64", "base64",
"bitflags 2.4.0", "bitflags 2.4.1",
"byteorder", "byteorder",
"bytes", "bytes",
"crc", "crc",
@ -4524,7 +4524,7 @@ checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624"
dependencies = [ dependencies = [
"atoi", "atoi",
"base64", "base64",
"bitflags 2.4.0", "bitflags 2.4.1",
"byteorder", "byteorder",
"crc", "crc",
"dotenvy", "dotenvy",
@ -4733,9 +4733,9 @@ dependencies = [
[[package]] [[package]]
name = "tao" name = "tao"
version = "0.22.2" version = "0.22.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f76221bce9db3af6b2b9cca4e92d8ea46c4cc88d785bc4b1a5cbcaab06f0b56" checksum = "f5d30690a6746dfbb26d4f41522757da1ebfd277514b58e27a80b7e55e511e52"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"cairo-rs", "cairo-rs",
@ -4920,7 +4920,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-app" name = "tauri-plugin-app"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"tauri", "tauri",
] ]
@ -4928,7 +4928,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-autostart" name = "tauri-plugin-autostart"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"auto-launch", "auto-launch",
"log", "log",
@ -4941,7 +4941,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-cli" name = "tauri-plugin-cli"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"clap", "clap",
"log", "log",
@ -4954,7 +4954,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-clipboard-manager" name = "tauri-plugin-clipboard-manager"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"arboard", "arboard",
"log", "log",
@ -4968,7 +4968,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-dialog" name = "tauri-plugin-dialog"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"glib", "glib",
"log", "log",
@ -4985,7 +4985,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-fs" name = "tauri-plugin-fs"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"glob", "glob",
@ -4998,7 +4998,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-http" name = "tauri-plugin-http"
version = "2.0.0-alpha.3" version = "2.0.0-alpha.3"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"data-url", "data-url",
"glob", "glob",
@ -5015,7 +5015,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-notification" name = "tauri-plugin-notification"
version = "2.0.0-alpha.3" version = "2.0.0-alpha.3"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"log", "log",
"notify-rust", "notify-rust",
@ -5033,7 +5033,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-os" name = "tauri-plugin-os"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"gethostname 0.4.3", "gethostname 0.4.3",
"log", "log",
@ -5049,7 +5049,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-process" name = "tauri-plugin-process"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"tauri", "tauri",
] ]
@ -5057,7 +5057,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-shell" name = "tauri-plugin-shell"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"encoding_rs", "encoding_rs",
"log", "log",
@ -5074,7 +5074,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-single-instance" name = "tauri-plugin-single-instance"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -5088,7 +5088,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-sql" name = "tauri-plugin-sql"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"log", "log",
@ -5104,7 +5104,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-store" name = "tauri-plugin-store"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",
@ -5116,7 +5116,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-updater" name = "tauri-plugin-updater"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"base64", "base64",
"dirs-next", "dirs-next",
@ -5141,7 +5141,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-upload" name = "tauri-plugin-upload"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"log", "log",
@ -5158,7 +5158,7 @@ dependencies = [
[[package]] [[package]]
name = "tauri-plugin-window" name = "tauri-plugin-window"
version = "2.0.0-alpha.2" version = "2.0.0-alpha.2"
source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#8902fe9adf256c52e7e6a14370f56d0b4780a3a2" source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v2#1240631840060f98b493c3cd01120ac2b65e88f2"
dependencies = [ dependencies = [
"serde", "serde",
"tauri", "tauri",

View File

@ -67,6 +67,7 @@ export function Circle() {
lru.clear(); lru.clear();
// done // done
await db.createSetting('circles', '1');
setCircle(); setCircle();
}; };

View File

@ -1,5 +1,6 @@
import { NDKEvent, NDKKind, NDKPrivateKeySigner } from '@nostr-dev-kit/ndk'; import { NDKEvent, NDKKind, NDKPrivateKeySigner } from '@nostr-dev-kit/ndk';
import { downloadDir } from '@tauri-apps/api/path'; import { downloadDir } from '@tauri-apps/api/path';
import { writeText } from '@tauri-apps/plugin-clipboard-manager';
import { message, save } from '@tauri-apps/plugin-dialog'; import { message, save } from '@tauri-apps/plugin-dialog';
import { writeTextFile } from '@tauri-apps/plugin-fs'; import { writeTextFile } from '@tauri-apps/plugin-fs';
import { motion } from 'framer-motion'; import { motion } from 'framer-motion';
@ -42,18 +43,14 @@ export function CreateAccountScreen() {
'data:image/svg+xml;utf8,' + 'data:image/svg+xml;utf8,' +
encodeURIComponent(minidenticon('lume new account', 90, 50)); encodeURIComponent(minidenticon('lume new account', 90, 50));
const onSubmit = async (data: { const onSubmit = async (data: { name: string; about: string }) => {
name: string;
display_name: string;
about: string;
}) => {
try { try {
setLoading(true); setLoading(true);
const profile = { const profile = {
...data, ...data,
name: data.name, name: data.name,
display_name: data.display_name, display_name: data.name,
bio: data.about, bio: data.about,
}; };
@ -93,6 +90,10 @@ export function CreateAccountScreen() {
} }
}; };
const copyNsec = async () => {
await writeText(keys.nsec);
};
const download = async () => { const download = async () => {
try { try {
const downloadPath = await downloadDir(); const downloadPath = await downloadDir();
@ -116,7 +117,7 @@ export function CreateAccountScreen() {
return ( return (
<div className="relative flex h-full w-full items-center justify-center"> <div className="relative flex h-full w-full items-center justify-center">
<div className="absolute left-[8px] top-4"> <div className="absolute left-[8px] top-2">
{!keys ? ( {!keys ? (
<button <button
onClick={() => navigate(-1)} onClick={() => navigate(-1)}
@ -230,11 +231,24 @@ export function CreateAccountScreen() {
<label htmlFor="nsec" className="text-sm font-semibold"> <label htmlFor="nsec" className="text-sm font-semibold">
Private key Private key
</label> </label>
<div className="relative w-full">
<input <input
readOnly readOnly
value={keys.nsec} value={
className="h-11 rounded-lg bg-neutral-200 px-3 placeholder:text-neutral-500 dark:bg-neutral-800 dark:placeholder:text-neutral-400" keys.nsec.substring(0, 10) + '**************************'
}
className="h-11 w-full rounded-lg bg-neutral-200 px-3 placeholder:text-neutral-500 dark:bg-neutral-800 dark:placeholder:text-neutral-400"
/> />
<div className="absolute right-0 top-0 inline-flex h-11 items-center justify-center px-2">
<button
type="button"
onClick={copyNsec}
className="rounded-md bg-neutral-300 px-2 py-1 text-sm font-medium hover:bg-neutral-400 dark:bg-neutral-700 dark:hover:bg-neutral-600"
>
Copy
</button>
</div>
</div>
</div> </div>
<div className="flex flex-col gap-1"> <div className="flex flex-col gap-1">
<label htmlFor="nsec" className="text-sm font-semibold"> <label htmlFor="nsec" className="text-sm font-semibold">

View File

@ -21,7 +21,7 @@ export function WelcomeScreen() {
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-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"
> >
Log in Log in with key
</Link> </Link>
</div> </div>
</div> </div>

View File

@ -1,5 +1,5 @@
import { useCallback, useEffect } from 'react'; import { useCallback, useEffect, useRef } from 'react';
import { VList } from 'virtua'; import { VList, VListHandle } from 'virtua';
import { ToggleWidgetList } from '@app/space/components/toggle'; import { ToggleWidgetList } from '@app/space/components/toggle';
import { WidgetList } from '@app/space/components/widgetList'; import { WidgetList } from '@app/space/components/widgetList';
@ -31,6 +31,7 @@ import { Widget } from '@utils/types';
export function SpaceScreen() { export function SpaceScreen() {
const { db } = useStorage(); const { db } = useStorage();
const vlistRef = useRef<VListHandle>(null);
const [widgets, fetchWidgets] = useWidgets((state) => [ const [widgets, fetchWidgets] = useWidgets((state) => [
state.widgets, state.widgets,
@ -88,6 +89,7 @@ export function SpaceScreen() {
<VList <VList
className="h-full w-full flex-nowrap overflow-x-auto !overflow-y-hidden scrollbar-none" className="h-full w-full flex-nowrap overflow-x-auto !overflow-y-hidden scrollbar-none"
horizontal horizontal
ref={vlistRef}
> >
{!widgets ? ( {!widgets ? (
<div className="flex h-full w-[420px] flex-col items-center justify-center"> <div className="flex h-full w-[420px] flex-col items-center justify-center">

View File

@ -1,11 +1,12 @@
import { NDKFilter, NDKKind } from '@nostr-dev-kit/ndk'; import { NDKFilter, NDKKind } from '@nostr-dev-kit/ndk';
import * as Avatar from '@radix-ui/react-avatar';
import { minidenticon } from 'minidenticons';
import { useEffect } from 'react'; import { useEffect } from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { useStorage } from '@libs/storage/provider'; import { useStorage } from '@libs/storage/provider';
import { HorizontalDotsIcon } from '@shared/icons'; import { HorizontalDotsIcon } from '@shared/icons';
import { Image } from '@shared/image';
import { useActivities } from '@stores/activities'; import { useActivities } from '@stores/activities';
@ -19,6 +20,9 @@ export function ActiveAccount() {
const { sub } = useNostr(); const { sub } = useNostr();
const addActivity = useActivities((state) => state.addActivity); const addActivity = useActivities((state) => state.addActivity);
const svgURI =
'data:image/svg+xml;utf8,' +
encodeURIComponent(minidenticon(db.account.pubkey, 90, 50));
useEffect(() => { useEffect(() => {
const filter: NDKFilter = { const filter: NDKFilter = {
@ -57,12 +61,24 @@ export function ActiveAccount() {
return ( return (
<div className="flex flex-col gap-1 rounded-lg bg-neutral-100 p-1 hover:bg-neutral-200 dark:bg-neutral-900 dark:hover:bg-neutral-800"> <div className="flex flex-col gap-1 rounded-lg bg-neutral-100 p-1 hover:bg-neutral-200 dark:bg-neutral-900 dark:hover:bg-neutral-800">
<Link to={`/users/${db.account.pubkey}`} className="relative inline-block"> <Link to={`/users/${db.account.pubkey}`} className="relative inline-block">
<Image <Avatar.Root>
<Avatar.Image
src={user?.picture || user?.image} src={user?.picture || user?.image}
alt={db.account.npub} alt={db.account.pubkey}
loading="lazy"
decoding="async"
style={{ contentVisibility: 'auto' }}
className="aspect-square h-auto w-full rounded-md" className="aspect-square h-auto w-full rounded-md"
/> />
<span className="absolute bottom-0 right-0 block h-2 w-2 rounded-full bg-emerald-500 ring-2 ring-neutral-100 dark:ring-neutral-900" /> <Avatar.Fallback delayMs={300}>
<img
src={svgURI}
alt={db.account.pubkeypubkey}
className="aspect-square h-auto w-full rounded-md bg-black dark:bg-white"
/>
</Avatar.Fallback>
</Avatar.Root>
<span className="absolute bottom-0 right-0 block h-2 w-2 rounded-full bg-teal-500 ring-2 ring-neutral-100 dark:ring-neutral-900" />
</Link> </Link>
<div className="inline-flex items-center justify-center rounded-md"> <div className="inline-flex items-center justify-center rounded-md">
<HorizontalDotsIcon className="h-4 w-4" /> <HorizontalDotsIcon className="h-4 w-4" />

View File

@ -25,7 +25,7 @@ export function AvatarUploader({
<button <button
type="button" type="button"
onClick={() => uploadAvatar()} onClick={() => uploadAvatar()}
className="inline-flex items-center gap-1 rounded-lg border border-blue-200 bg-blue-100 px-1.5 py-1 text-sm font-medium text-blue-500 hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-500 dark:hover:bg-blue-800" className="inline-flex items-center gap-1 rounded-lg border border-blue-200 bg-blue-100 px-1.5 py-1 text-sm font-medium text-blue-500 hover:border-blue-300 hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-500 dark:hover:border-blue-800 dark:hover:bg-blue-800"
> >
{loading ? ( {loading ? (
<LoaderIcon className="h-4 w-4 animate-spin" /> <LoaderIcon className="h-4 w-4 animate-spin" />

View File

@ -28,7 +28,7 @@ export function ComposerModal() {
<Dialog.Trigger asChild> <Dialog.Trigger asChild>
<button <button
type="button" type="button"
className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-300 text-black hover:bg-blue-600 hover:text-white dark:bg-neutral-700 dark:text-white dark:hover:bg-blue-600" className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-100 text-black hover:bg-blue-500 hover:text-white dark:bg-neutral-900 dark:text-white dark:hover:bg-blue-500"
> >
<ComposeIcon className="h-5 w-5" /> <ComposeIcon className="h-5 w-5" />
</button> </button>

View File

@ -26,7 +26,7 @@ export function Navigation() {
> >
<HomeIcon className="h-6 w-6" /> <HomeIcon className="h-6 w-6" />
</div> </div>
<div className="text-sm text-black dark:text-white">Home</div> <div className="text-sm font-medium text-black dark:text-white">Home</div>
</> </>
)} )}
</NavLink> </NavLink>
@ -47,7 +47,7 @@ export function Navigation() {
> >
<ChatsIcon className="h-6 w-6" /> <ChatsIcon className="h-6 w-6" />
</div> </div>
<div className="text-sm text-black dark:text-white">Chats</div> <div className="text-sm font-medium text-black dark:text-white">Chats</div>
</> </>
)} )}
</NavLink> </NavLink>
@ -68,7 +68,7 @@ export function Navigation() {
> >
<RelayIcon className="h-6 w-6" /> <RelayIcon className="h-6 w-6" />
</div> </div>
<div className="text-sm text-black dark:text-white">Relays</div> <div className="text-sm font-medium text-black dark:text-white">Relays</div>
</> </>
)} )}
</NavLink> </NavLink>
@ -89,7 +89,9 @@ export function Navigation() {
> >
<ExploreIcon className="h-6 w-6" /> <ExploreIcon className="h-6 w-6" />
</div> </div>
<div className="text-sm text-black dark:text-white">Explore</div> <div className="text-sm font-medium text-black dark:text-white">
Explore
</div>
</> </>
)} )}
</NavLink> </NavLink>
@ -98,7 +100,7 @@ export function Navigation() {
<ComposerModal /> <ComposerModal />
<Link <Link
to="/nwc" to="/nwc"
className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-100 hover:bg-blue-600 hover:text-white dark:bg-neutral-900 dark:hover:bg-blue-600" className="flex aspect-square h-auto w-full items-center justify-center rounded-lg bg-neutral-100 hover:bg-blue-500 hover:text-white dark:bg-neutral-900 dark:hover:bg-blue-500"
> >
<NwcIcon className="h-5 w-5" /> <NwcIcon className="h-5 w-5" />
</Link> </Link>

View File

@ -1,20 +1,36 @@
import { useStorage } from '@libs/storage/provider'; import { useStorage } from '@libs/storage/provider';
import { CancelIcon } from '@shared/icons'; import { CancelIcon } from '@shared/icons';
import { User } from '@shared/user';
import { useWidgets } from '@stores/widgets'; import { useWidgets } from '@stores/widgets';
export function TitleBar({ id, title }: { id?: string; title: string }) { export function TitleBar({ id, title }: { id?: string; title?: string }) {
const { db } = useStorage(); const { db } = useStorage();
const remove = useWidgets((state) => state.removeWidget); const remove = useWidgets((state) => state.removeWidget);
return ( return (
<div className="flex h-11 w-full shrink-0 items-center justify-between overflow-hidden px-3"> <div className="flex h-11 w-full shrink-0 items-center justify-between overflow-hidden px-3">
<div className="w-6" /> <div className="w-6" />
{id === '9999' ? (
<div className="isolate flex -space-x-2">
{db.account.circles
?.slice(0, 4)
.map((item) => <User key={item} pubkey={item} variant="ministacked" />)}
{db.account.circles?.length > 4 ? (
<div className="inline-flex h-6 w-6 items-center justify-center rounded-full bg-neutral-200 text-neutral-900 ring-1 ring-neutral-300 dark:bg-neutral-800 dark:text-neutral-100 dark:ring-neutral-700">
<span className="text-xs font-medium">
+{db.account.circles?.length - 4}
</span>
</div>
) : null}
</div>
) : (
<h3 className="text-sm font-medium tracking-wide text-neutral-900 dark:text-neutral-100"> <h3 className="text-sm font-medium tracking-wide text-neutral-900 dark:text-neutral-100">
{title} {title}
</h3> </h3>
{id ? ( )}
{id !== '9999' ? (
<button <button
type="button" type="button"
onClick={() => remove(db, id)} onClick={() => remove(db, id)}

View File

@ -33,7 +33,8 @@ export const User = memo(function User({
| 'large' | 'large'
| 'thread' | 'thread'
| 'avatar' | 'avatar'
| 'stacked'; | 'stacked'
| 'ministacked';
embedProfile?: string; embedProfile?: string;
}) { }) {
const { status, user } = useProfile(pubkey, embedProfile); const { status, user } = useProfile(pubkey, embedProfile);
@ -228,6 +229,28 @@ export const User = memo(function User({
); );
} }
if (variant === 'ministacked') {
return (
<Avatar.Root>
<Avatar.Image
src={user?.picture || user?.image}
alt={pubkey}
loading="lazy"
decoding="async"
style={{ contentVisibility: 'auto' }}
className="inline-block h-6 w-6 rounded-full ring-1 ring-white dark:ring-black"
/>
<Avatar.Fallback delayMs={300}>
<img
src={svgURI}
alt={pubkey}
className="inline-block h-6 w-6 rounded-full bg-black ring-1 ring-white dark:bg-white dark:ring-black"
/>
</Avatar.Fallback>
</Avatar.Root>
);
}
if (variant === 'repost') { if (variant === 'repost') {
return ( return (
<div className="flex gap-3"> <div className="flex gap-3">

View File

@ -86,10 +86,10 @@ export function LocalNetworkWidget() {
// subscribe for new event // subscribe for new event
// sub will be managed by lru-cache // sub will be managed by lru-cache
useEffect(() => { useEffect(() => {
if (db.account && db.account.network && dbEvents.length > 0) { if (db.account && db.account.circles && dbEvents.length > 0) {
const filter: NDKFilter = { const filter: NDKFilter = {
kinds: [NDKKind.Text, NDKKind.Repost], kinds: [NDKKind.Text, NDKKind.Repost],
authors: db.account.network, authors: db.account.circles,
since: Math.floor(Date.now() / 1000), since: Math.floor(Date.now() / 1000),
}; };
@ -102,7 +102,7 @@ export function LocalNetworkWidget() {
return ( return (
<WidgetWrapper> <WidgetWrapper>
<TitleBar title="Network" /> <TitleBar id="9999" />
<div className="flex-1"> <div className="flex-1">
{status === 'loading' ? ( {status === 'loading' ? (
<div className="px-3 py-1.5"> <div className="px-3 py-1.5">

View File

@ -57,7 +57,7 @@ export function XfeedsWidget({ params }: { params: Widget }) {
/> />
</div> </div>
<div className="flex h-[500px] w-full flex-col overflow-y-auto rounded-lg bg-neutral-200 py-2 scrollbar-none dark:bg-neutral-800"> <div className="flex h-[500px] w-full flex-col overflow-y-auto rounded-lg bg-neutral-200 py-2 scrollbar-none dark:bg-neutral-800">
{db.account.network.map((item: string) => ( {db.account.circles.map((item: string) => (
<button <button
key={item} key={item}
type="button" type="button"

View File

@ -47,7 +47,7 @@ export const WidgetKinds = {
export const DefaultWidgets: Array<WidgetGroup> = [ export const DefaultWidgets: Array<WidgetGroup> = [
{ {
title: 'Network / Follows', title: 'Circles / Follows',
data: [ data: [
{ {
kind: WidgetKinds.tmp.xfeed, kind: WidgetKinds.tmp.xfeed,
@ -57,12 +57,12 @@ export const DefaultWidgets: Array<WidgetGroup> = [
{ {
kind: WidgetKinds.local.files, kind: WidgetKinds.local.files,
title: 'Files', title: 'Files',
description: 'All files shared by people in your network', description: 'All files shared by people in your circle',
}, },
{ {
kind: WidgetKinds.local.articles, kind: WidgetKinds.local.articles,
title: 'Articles', title: 'Articles',
description: 'All articles shared by people in your network', description: 'All articles shared by people in your circle',
}, },
{ {
kind: WidgetKinds.local.follows, kind: WidgetKinds.local.follows,
@ -130,7 +130,7 @@ export const useWidgets = create<WidgetState>()(
// default: add network widget // default: add network widget
dbWidgets.unshift({ dbWidgets.unshift({
id: '9999', id: '9999',
title: 'Network', title: '',
content: '', content: '',
kind: WidgetKinds.local.network, kind: WidgetKinds.local.network,
}); });

View File

@ -404,14 +404,14 @@ export function useNostr() {
removeContact, removeContact,
getAllNIP04Chats, getAllNIP04Chats,
getAllEventsSinceLastLogin, getAllEventsSinceLastLogin,
getContactsByPubkey,
getEventsByPubkey,
getAllRelaysByUsers,
fetchActivities, fetchActivities,
fetchNIP04Messages, fetchNIP04Messages,
fetchAllReplies, fetchAllReplies,
publish, publish,
createZap, createZap,
upload, upload,
getContactsByPubkey,
getEventsByPubkey,
getAllRelaysByUsers,
}; };
} }