- {hoursAgo(24, now.current).toLocaleDateString('en-US', {
+ {getHourAgo(24, now.current).toLocaleDateString('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
diff --git a/src/app/channel/components/messages/form.tsx b/src/app/channel/components/messages/form.tsx
index 14363fba..1108e4d9 100644
--- a/src/app/channel/components/messages/form.tsx
+++ b/src/app/channel/components/messages/form.tsx
@@ -1,11 +1,15 @@
-import UserReply from '@lume/app/channel/components/messages/userReply';
-import { ImagePicker } from '@lume/shared/form/imagePicker';
-import CancelIcon from '@lume/shared/icons/cancel';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { channelContentAtom, channelReplyAtom } from '@lume/stores/channel';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import UserReply from '@app/channel/components/messages/userReply';
+
+import { ImagePicker } from '@shared/form/imagePicker';
+import { RelayContext } from '@shared/relayProvider';
+
+import CancelIcon from '@icons/cancel';
+
+import { channelContentAtom, channelReplyAtom } from '@stores/channel';
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { useAtom, useAtomValue } from 'jotai';
import { useResetAtom } from 'jotai/utils';
diff --git a/src/app/channel/components/messages/hideButton.tsx b/src/app/channel/components/messages/hideButton.tsx
index eb6c1e56..96926bac 100644
--- a/src/app/channel/components/messages/hideButton.tsx
+++ b/src/app/channel/components/messages/hideButton.tsx
@@ -1,11 +1,14 @@
-import CancelIcon from '@lume/shared/icons/cancel';
-import HideIcon from '@lume/shared/icons/hide';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { Tooltip } from '@lume/shared/tooltip';
-import { channelMessagesAtom } from '@lume/stores/channel';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { RelayContext } from '@shared/relayProvider';
+import { Tooltip } from '@shared/tooltip';
+
+import CancelIcon from '@icons/cancel';
+import HideIcon from '@icons/hide';
+
+import { channelMessagesAtom } from '@stores/channel';
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { Dialog, Transition } from '@headlessui/react';
import { useAtom } from 'jotai';
diff --git a/src/app/channel/components/messages/item.tsx b/src/app/channel/components/messages/item.tsx
index 55be8546..de8832db 100644
--- a/src/app/channel/components/messages/item.tsx
+++ b/src/app/channel/components/messages/item.tsx
@@ -1,8 +1,9 @@
-import MessageHideButton from '@lume/app/channel/components/messages/hideButton';
-import MessageMuteButton from '@lume/app/channel/components/messages/muteButton';
-import MessageReplyButton from '@lume/app/channel/components/messages/replyButton';
-import ChannelMessageUser from '@lume/app/channel/components/messages/user';
-import { noteParser } from '@lume/utils/parser';
+import MessageHideButton from '@app/channel/components/messages/hideButton';
+import MessageMuteButton from '@app/channel/components/messages/muteButton';
+import MessageReplyButton from '@app/channel/components/messages/replyButton';
+import ChannelMessageUser from '@app/channel/components/messages/user';
+
+import { noteParser } from '@utils/parser';
import { useMemo } from 'react';
diff --git a/src/app/channel/components/messages/muteButton.tsx b/src/app/channel/components/messages/muteButton.tsx
index f698df87..ea4f1f7e 100644
--- a/src/app/channel/components/messages/muteButton.tsx
+++ b/src/app/channel/components/messages/muteButton.tsx
@@ -1,11 +1,14 @@
-import CancelIcon from '@lume/shared/icons/cancel';
-import MuteIcon from '@lume/shared/icons/mute';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { Tooltip } from '@lume/shared/tooltip';
-import { channelMessagesAtom } from '@lume/stores/channel';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { RelayContext } from '@shared/relayProvider';
+import { Tooltip } from '@shared/tooltip';
+
+import CancelIcon from '@icons/cancel';
+import MuteIcon from '@icons/mute';
+
+import { channelMessagesAtom } from '@stores/channel';
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { Dialog, Transition } from '@headlessui/react';
import { useAtom } from 'jotai';
diff --git a/src/app/channel/components/messages/replyButton.tsx b/src/app/channel/components/messages/replyButton.tsx
index 502c2625..2ca1cf93 100644
--- a/src/app/channel/components/messages/replyButton.tsx
+++ b/src/app/channel/components/messages/replyButton.tsx
@@ -1,6 +1,8 @@
-import ReplyMessageIcon from '@lume/shared/icons/replyMessage';
-import { Tooltip } from '@lume/shared/tooltip';
-import { channelReplyAtom } from '@lume/stores/channel';
+import { Tooltip } from '@shared/tooltip';
+
+import ReplyMessageIcon from '@icons/replyMessage';
+
+import { channelReplyAtom } from '@stores/channel';
import { useSetAtom } from 'jotai';
diff --git a/src/app/channel/components/messages/user.tsx b/src/app/channel/components/messages/user.tsx
index 747121e9..d61a7ca8 100644
--- a/src/app/channel/components/messages/user.tsx
+++ b/src/app/channel/components/messages/user.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
diff --git a/src/app/channel/components/messages/userReply.tsx b/src/app/channel/components/messages/userReply.tsx
index 2ce45a72..b8e918c2 100644
--- a/src/app/channel/components/messages/userReply.tsx
+++ b/src/app/channel/components/messages/userReply.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
export default function UserReply({ pubkey }: { pubkey: string }) {
const { user, isError, isLoading } = useProfile(pubkey);
diff --git a/src/app/channel/components/metadata.tsx b/src/app/channel/components/metadata.tsx
index 3db4896e..ceb74699 100644
--- a/src/app/channel/components/metadata.tsx
+++ b/src/app/channel/components/metadata.tsx
@@ -1,7 +1,10 @@
-import CopyIcon from '@lume/shared/icons/copy';
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { useChannelProfile } from '@lume/utils/hooks/useChannelProfile';
+import { useChannelProfile } from '@app/channel/hooks/useChannelProfile';
+
+import { Image } from '@shared/image';
+
+import CopyIcon from '@icons/copy';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
import { nip19 } from 'nostr-tools';
diff --git a/src/app/channel/components/miniMember.tsx b/src/app/channel/components/miniMember.tsx
index b4c4afe8..2efa16b4 100644
--- a/src/app/channel/components/miniMember.tsx
+++ b/src/app/channel/components/miniMember.tsx
@@ -1,6 +1,8 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
export default function MiniMember({ pubkey }: { pubkey: string }) {
const { user, isError, isLoading } = useProfile(pubkey);
diff --git a/src/app/channel/components/mutedItem.tsx b/src/app/channel/components/mutedItem.tsx
index edd50134..ee35a93e 100644
--- a/src/app/channel/components/mutedItem.tsx
+++ b/src/app/channel/components/mutedItem.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
import { useState } from 'react';
@@ -10,7 +12,7 @@ export default function MutedItem({ data }: { data: any }) {
const [status, setStatus] = useState(data.status);
const unmute = async () => {
- const { updateItemInBlacklist } = await import('@lume/utils/storage');
+ const { updateItemInBlacklist } = await import('@utils/storage');
const res = await updateItemInBlacklist(data.content, 0);
if (res) {
setStatus(0);
@@ -18,7 +20,7 @@ export default function MutedItem({ data }: { data: any }) {
};
const mute = async () => {
- const { updateItemInBlacklist } = await import('@lume/utils/storage');
+ const { updateItemInBlacklist } = await import('@utils/storage');
const res = await updateItemInBlacklist(data.content, 1);
if (res) {
setStatus(1);
diff --git a/src/app/channel/components/updateModal.tsx b/src/app/channel/components/updateModal.tsx
index 41f618df..7811190f 100644
--- a/src/app/channel/components/updateModal.tsx
+++ b/src/app/channel/components/updateModal.tsx
@@ -1,12 +1,15 @@
-import { AvatarUploader } from '@lume/shared/avatarUploader';
-import CancelIcon from '@lume/shared/icons/cancel';
-import EditIcon from '@lume/shared/icons/edit';
-import { Image } from '@lume/shared/image';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { DEFAULT_AVATAR, WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
-import { getChannel, updateChannelMetadata } from '@lume/utils/storage';
+import { AvatarUploader } from '@shared/avatarUploader';
+import { Image } from '@shared/image';
+import { RelayContext } from '@shared/relayProvider';
+
+import CancelIcon from '@icons/cancel';
+import EditIcon from '@icons/edit';
+
+import { DEFAULT_AVATAR, WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
+import { getChannel, updateChannelMetadata } from '@utils/storage';
import { Dialog, Transition } from '@headlessui/react';
import { getEventHash, signEvent } from 'nostr-tools';
diff --git a/src/utils/hooks/useChannelProfile.tsx b/src/app/channel/hooks/useChannelProfile.tsx
similarity index 87%
rename from src/utils/hooks/useChannelProfile.tsx
rename to src/app/channel/hooks/useChannelProfile.tsx
index 58dad366..2f7bc9ee 100644
--- a/src/utils/hooks/useChannelProfile.tsx
+++ b/src/app/channel/hooks/useChannelProfile.tsx
@@ -1,6 +1,8 @@
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { getChannel } from '@lume/utils/storage';
+import { RelayContext } from '@shared/relayProvider';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { getChannel } from '@utils/storage';
import { useContext } from 'react';
import useSWR from 'swr';
diff --git a/src/app/channel/layout.tsx b/src/app/channel/layout.tsx
index 07a31ad7..72e34bdd 100644
--- a/src/app/channel/layout.tsx
+++ b/src/app/channel/layout.tsx
@@ -1,6 +1,6 @@
-import AppHeader from '@lume/shared/appHeader';
-import MultiAccounts from '@lume/shared/multiAccounts';
-import Navigation from '@lume/shared/navigation';
+import AppHeader from '@shared/appHeader';
+import MultiAccounts from '@shared/multiAccounts';
+import Navigation from '@shared/navigation';
export function LayoutChannel({ children }: { children: React.ReactNode }) {
return (
diff --git a/src/app/channel/pages/index.page.tsx b/src/app/channel/pages/index.page.tsx
index 2de477b0..2bb8f2ce 100644
--- a/src/app/channel/pages/index.page.tsx
+++ b/src/app/channel/pages/index.page.tsx
@@ -1,16 +1,19 @@
-import ChannelBlackList from '@lume/app/channel/components/blacklist';
-import ChannelMembers from '@lume/app/channel/components/members';
-import ChannelMessageForm from '@lume/app/channel/components/messages/form';
-import ChannelMetadata from '@lume/app/channel/components/metadata';
-import ChannelUpdateModal from '@lume/app/channel/components/updateModal';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { channelMessagesAtom, channelReplyAtom } from '@lume/stores/channel';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix, hoursAgo } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
-import { usePageContext } from '@lume/utils/hooks/usePageContext';
-import { getActiveBlacklist, getBlacklist } from '@lume/utils/storage';
-import { arrayObjToPureArr } from '@lume/utils/transform';
+import ChannelBlackList from '@app/channel/components/blacklist';
+import ChannelMembers from '@app/channel/components/members';
+import ChannelMessageForm from '@app/channel/components/messages/form';
+import ChannelMetadata from '@app/channel/components/metadata';
+import ChannelUpdateModal from '@app/channel/components/updateModal';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { channelMessagesAtom, channelReplyAtom } from '@stores/channel';
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix, getHourAgo } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
+import { usePageContext } from '@utils/hooks/usePageContext';
+import { getActiveBlacklist, getBlacklist } from '@utils/storage';
+import { arrayObjToPureArr } from '@utils/transform';
import { useSetAtom } from 'jotai';
import { useResetAtom } from 'jotai/utils';
@@ -30,7 +33,7 @@ const fetchHided = async ([, id]) => {
return array;
};
-const ChannelMessageList = lazy(() => import('@lume/app/channel/components/messageList'));
+const ChannelMessageList = lazy(() => import('@app/channel/components/messageList'));
export function Page() {
const pool: any = useContext(RelayContext);
@@ -57,7 +60,7 @@ export function Page() {
{
'#e': [key],
kinds: [42],
- since: dateToUnix(hoursAgo(24, now.current)),
+ since: dateToUnix(getHourAgo(24, now.current)),
limit: 20,
},
],
diff --git a/src/app/chat/components/item.tsx b/src/app/chat/components/item.tsx
index c1de1446..a73dcd65 100644
--- a/src/app/chat/components/item.tsx
+++ b/src/app/chat/components/item.tsx
@@ -1,8 +1,10 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { usePageContext } from '@lume/utils/hooks/usePageContext';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
+
+import { usePageContext } from '@utils/hooks/usePageContext';
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
import { twMerge } from 'tailwind-merge';
diff --git a/src/app/chat/components/list.tsx b/src/app/chat/components/list.tsx
index adb3df4d..16a0346a 100644
--- a/src/app/chat/components/list.tsx
+++ b/src/app/chat/components/list.tsx
@@ -1,7 +1,8 @@
-import ChatsListItem from '@lume/app/chat/components/item';
-import ChatsListSelfItem from '@lume/app/chat/components/self';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
-import { getChats } from '@lume/utils/storage';
+import ChatsListItem from '@app/chat/components/item';
+import ChatsListSelfItem from '@app/chat/components/self';
+
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
+import { getChats } from '@utils/storage';
import useSWR from 'swr';
diff --git a/src/app/chat/components/messageList.tsx b/src/app/chat/components/messageList.tsx
index 4d0ec3fc..8923cc60 100644
--- a/src/app/chat/components/messageList.tsx
+++ b/src/app/chat/components/messageList.tsx
@@ -1,6 +1,8 @@
-import { ChatMessageItem } from '@lume/app/chat/components/messages/item';
-import { sortedChatMessagesAtom } from '@lume/stores/chat';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { ChatMessageItem } from '@app/chat/components/messages/item';
+
+import { sortedChatMessagesAtom } from '@stores/chat';
+
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { useAtomValue } from 'jotai';
import { useCallback, useRef } from 'react';
diff --git a/src/app/chat/components/messages/form.tsx b/src/app/chat/components/messages/form.tsx
index 084b3c4c..43ebc3c6 100644
--- a/src/app/chat/components/messages/form.tsx
+++ b/src/app/chat/components/messages/form.tsx
@@ -1,9 +1,11 @@
-import { ImagePicker } from '@lume/shared/form/imagePicker';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { chatContentAtom } from '@lume/stores/chat';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { ImagePicker } from '@shared/form/imagePicker';
+import { RelayContext } from '@shared/relayProvider';
+
+import { chatContentAtom } from '@stores/chat';
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { useAtom } from 'jotai';
import { useResetAtom } from 'jotai/utils';
diff --git a/src/app/chat/components/messages/item.tsx b/src/app/chat/components/messages/item.tsx
index 971538f9..38d0ab22 100644
--- a/src/app/chat/components/messages/item.tsx
+++ b/src/app/chat/components/messages/item.tsx
@@ -1,8 +1,9 @@
-import ChatMessageUser from '@lume/app/chat/components/messages/user';
-import ImagePreview from '@lume/app/note/components/preview/image';
-import VideoPreview from '@lume/app/note/components/preview/video';
-import { useDecryptMessage } from '@lume/utils/hooks/useDecryptMessage';
-import { noteParser } from '@lume/utils/parser';
+import ChatMessageUser from '@app/chat/components/messages/user';
+import { useDecryptMessage } from '@app/chat/hooks/useDecryptMessage';
+import ImagePreview from '@app/note/components/preview/image';
+import VideoPreview from '@app/note/components/preview/video';
+
+import { noteParser } from '@utils/parser';
import { memo } from 'react';
diff --git a/src/app/chat/components/messages/user.tsx b/src/app/chat/components/messages/user.tsx
index 47aeba6e..d514defd 100644
--- a/src/app/chat/components/messages/user.tsx
+++ b/src/app/chat/components/messages/user.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
diff --git a/src/app/chat/components/self.tsx b/src/app/chat/components/self.tsx
index 1d02d05e..b5d6994b 100644
--- a/src/app/chat/components/self.tsx
+++ b/src/app/chat/components/self.tsx
@@ -1,8 +1,10 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
-import { usePageContext } from '@lume/utils/hooks/usePageContext';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
+
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
+import { usePageContext } from '@utils/hooks/usePageContext';
+import { shortenKey } from '@utils/shortenKey';
import { twMerge } from 'tailwind-merge';
diff --git a/src/utils/hooks/useDecryptMessage.tsx b/src/app/chat/hooks/useDecryptMessage.tsx
similarity index 100%
rename from src/utils/hooks/useDecryptMessage.tsx
rename to src/app/chat/hooks/useDecryptMessage.tsx
diff --git a/src/app/chat/layout.tsx b/src/app/chat/layout.tsx
index 06287ec8..89b1e781 100644
--- a/src/app/chat/layout.tsx
+++ b/src/app/chat/layout.tsx
@@ -1,6 +1,6 @@
-import AppHeader from '@lume/shared/appHeader';
-import MultiAccounts from '@lume/shared/multiAccounts';
-import Navigation from '@lume/shared/navigation';
+import AppHeader from '@shared/appHeader';
+import MultiAccounts from '@shared/multiAccounts';
+import Navigation from '@shared/navigation';
export function LayoutChat({ children }: { children: React.ReactNode }) {
return (
diff --git a/src/app/chat/pages/index.page.tsx b/src/app/chat/pages/index.page.tsx
index 1bb9768e..0455d830 100644
--- a/src/app/chat/pages/index.page.tsx
+++ b/src/app/chat/pages/index.page.tsx
@@ -1,16 +1,19 @@
-import ChatMessageForm from '@lume/app/chat/components/messages/form';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { chatMessagesAtom } from '@lume/stores/chat';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
-import { usePageContext } from '@lume/utils/hooks/usePageContext';
+import ChatMessageForm from '@app/chat/components/messages/form';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { chatMessagesAtom } from '@stores/chat';
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
+import { usePageContext } from '@utils/hooks/usePageContext';
import { useSetAtom } from 'jotai';
import { useResetAtom } from 'jotai/utils';
import { Suspense, lazy, useContext, useEffect } from 'react';
import useSWRSubscription from 'swr/subscription';
-const ChatMessageList = lazy(() => import('@lume/app/chat/components/messageList'));
+const ChatMessageList = lazy(() => import('@app/chat/components/messageList'));
export function Page() {
const pool: any = useContext(RelayContext);
diff --git a/src/app/index/pages/index.page.tsx b/src/app/index/pages/index.page.tsx
index cb1bdfa2..5cdb50c9 100644
--- a/src/app/index/pages/index.page.tsx
+++ b/src/app/index/pages/index.page.tsx
@@ -1,4 +1,4 @@
-import { getActiveAccount } from '@lume/utils/storage';
+import { getActiveAccount } from '@utils/storage';
import useSWR from 'swr';
import { navigate } from 'vite-plugin-ssr/client/router';
diff --git a/src/app/inital-data/pages/index.page.tsx b/src/app/inital-data/pages/index.page.tsx
index 0a4ba408..2e145d69 100644
--- a/src/app/inital-data/pages/index.page.tsx
+++ b/src/app/inital-data/pages/index.page.tsx
@@ -1,7 +1,10 @@
-import LumeIcon from '@lume/shared/icons/lume';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix, hoursAgo } from '@lume/utils/getDate';
+import { RelayContext } from '@shared/relayProvider';
+
+import LumeIcon from '@icons/lume';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix, getHourAgo } from '@utils/date';
import {
addToBlacklist,
countTotalLongNotes,
@@ -11,8 +14,8 @@ import {
getActiveAccount,
getLastLogin,
updateLastLogin,
-} from '@lume/utils/storage';
-import { getParentID, nip02ToArray } from '@lume/utils/transform';
+} from '@utils/storage';
+import { getParentID, nip02ToArray } from '@utils/transform';
import { useContext, useEffect, useRef } from 'react';
import { navigate } from 'vite-plugin-ssr/client/router';
@@ -38,12 +41,12 @@ export function Page() {
let sinceLongNotes: number;
if (notes === 0) {
- sinceNotes = dateToUnix(hoursAgo(48, now.current));
+ sinceNotes = dateToUnix(getHourAgo(48, now.current));
} else {
if (parseInt(lastLogin) > 0) {
sinceNotes = parseInt(lastLogin);
} else {
- sinceNotes = dateToUnix(hoursAgo(48, now.current));
+ sinceNotes = dateToUnix(getHourAgo(48, now.current));
}
}
@@ -174,7 +177,7 @@ export function Page() {
() => {
updateLastLogin(dateToUnix(now.current));
timeout = setTimeout(() => {
- navigate('/app/daily', { overwriteLastHistoryEntry: true });
+ navigate('/app/radar', { overwriteLastHistoryEntry: true });
}, 5000);
}
);
diff --git a/src/app/note/components/base.tsx b/src/app/note/components/base.tsx
index 580014df..a892abe8 100644
--- a/src/app/note/components/base.tsx
+++ b/src/app/note/components/base.tsx
@@ -1,11 +1,12 @@
-import { Kind1 } from '@lume/app/note/components/kind1';
-import { Kind1063 } from '@lume/app/note/components/kind1063';
-import NoteMetadata from '@lume/app/note/components/metadata';
-import { NoteParent } from '@lume/app/note/components/parent';
-import { NoteDefaultUser } from '@lume/app/note/components/user/default';
-import { NoteWrapper } from '@lume/app/note/components/wrapper';
-import { noteParser } from '@lume/utils/parser';
-import { isTagsIncludeID } from '@lume/utils/transform';
+import { Kind1 } from '@app/note/components/kind1';
+import { Kind1063 } from '@app/note/components/kind1063';
+import NoteMetadata from '@app/note/components/metadata';
+import { NoteParent } from '@app/note/components/parent';
+import { NoteDefaultUser } from '@app/note/components/user/default';
+import { NoteWrapper } from '@app/note/components/wrapper';
+
+import { noteParser } from '@utils/parser';
+import { isTagsIncludeID } from '@utils/transform';
import { useMemo } from 'react';
diff --git a/src/app/note/components/kind1.tsx b/src/app/note/components/kind1.tsx
index 45758803..94e62c2b 100644
--- a/src/app/note/components/kind1.tsx
+++ b/src/app/note/components/kind1.tsx
@@ -1,7 +1,7 @@
-import { MentionNote } from '@lume/app/note/components/mentions/note';
-import { MentionUser } from '@lume/app/note/components/mentions/user';
-import ImagePreview from '@lume/app/note/components/preview/image';
-import VideoPreview from '@lume/app/note/components/preview/video';
+import { MentionNote } from '@app/note/components/mentions/note';
+import { MentionUser } from '@app/note/components/mentions/user';
+import ImagePreview from '@app/note/components/preview/image';
+import VideoPreview from '@app/note/components/preview/video';
import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
diff --git a/src/app/note/components/kind1063.tsx b/src/app/note/components/kind1063.tsx
index d69f03a9..7b35f354 100644
--- a/src/app/note/components/kind1063.tsx
+++ b/src/app/note/components/kind1063.tsx
@@ -1,4 +1,4 @@
-import { Image } from '@lume/shared/image';
+import { Image } from '@shared/image';
function isImage(url: string) {
return /\.(jpg|jpeg|gif|png|webp|avif)$/.test(url);
diff --git a/src/app/note/components/mentions/note.tsx b/src/app/note/components/mentions/note.tsx
index df548c7c..fa85b597 100644
--- a/src/app/note/components/mentions/note.tsx
+++ b/src/app/note/components/mentions/note.tsx
@@ -1,11 +1,14 @@
-import { Kind1 } from '@lume/app/note/components/kind1';
-import { Kind1063 } from '@lume/app/note/components/kind1063';
-import { NoteSkeleton } from '@lume/app/note/components/skeleton';
-import { NoteDefaultUser } from '@lume/app/note/components/user/default';
-import { NoteWrapper } from '@lume/app/note/components/wrapper';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { noteParser } from '@lume/utils/parser';
+import { Kind1 } from '@app/note/components/kind1';
+import { Kind1063 } from '@app/note/components/kind1063';
+import { NoteSkeleton } from '@app/note/components/skeleton';
+import { NoteDefaultUser } from '@app/note/components/user/default';
+import { NoteWrapper } from '@app/note/components/wrapper';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { noteParser } from '@utils/parser';
import { memo, useContext } from 'react';
import useSWRSubscription from 'swr/subscription';
diff --git a/src/app/note/components/mentions/user.tsx b/src/app/note/components/mentions/user.tsx
index 3b50ea9f..0168e66a 100644
--- a/src/app/note/components/mentions/user.tsx
+++ b/src/app/note/components/mentions/user.tsx
@@ -1,5 +1,5 @@
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
export function MentionUser(props: { children: any[] }) {
const pubkey = props.children[0];
diff --git a/src/app/note/components/metadata.tsx b/src/app/note/components/metadata.tsx
index a19aab14..22d35d5a 100644
--- a/src/app/note/components/metadata.tsx
+++ b/src/app/note/components/metadata.tsx
@@ -1,9 +1,12 @@
-import NoteLike from '@lume/app/note/components/metadata/like';
-import NoteReply from '@lume/app/note/components/metadata/reply';
-import NoteRepost from '@lume/app/note/components/metadata/repost';
-import ZapIcon from '@lume/shared/icons/zap';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
+import NoteLike from '@app/note/components/metadata/like';
+import NoteReply from '@app/note/components/metadata/reply';
+import NoteRepost from '@app/note/components/metadata/repost';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import ZapIcon from '@icons/zap';
+
+import { READONLY_RELAYS } from '@stores/constants';
import { useContext, useState } from 'react';
import useSWRSubscription from 'swr/subscription';
diff --git a/src/app/note/components/metadata/like.tsx b/src/app/note/components/metadata/like.tsx
index a9ea0881..2f018f70 100644
--- a/src/app/note/components/metadata/like.tsx
+++ b/src/app/note/components/metadata/like.tsx
@@ -1,8 +1,11 @@
-import LikeIcon from '@lume/shared/icons/like';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { RelayContext } from '@shared/relayProvider';
+
+import LikeIcon from '@icons/like';
+
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { getEventHash, signEvent } from 'nostr-tools';
import { useContext, useEffect, useState } from 'react';
diff --git a/src/app/note/components/metadata/reply.tsx b/src/app/note/components/metadata/reply.tsx
index 0a4f6f93..83db98e2 100644
--- a/src/app/note/components/metadata/reply.tsx
+++ b/src/app/note/components/metadata/reply.tsx
@@ -1,9 +1,12 @@
-import ReplyIcon from '@lume/shared/icons/reply';
-import { Image } from '@lume/shared/image';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { Image } from '@shared/image';
+import { RelayContext } from '@shared/relayProvider';
+
+import ReplyIcon from '@icons/reply';
+
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { Dialog, Transition } from '@headlessui/react';
import { getEventHash, signEvent } from 'nostr-tools';
diff --git a/src/app/note/components/metadata/repost.tsx b/src/app/note/components/metadata/repost.tsx
index 9a65e180..4121cd1d 100644
--- a/src/app/note/components/metadata/repost.tsx
+++ b/src/app/note/components/metadata/repost.tsx
@@ -1,8 +1,11 @@
-import RepostIcon from '@lume/shared/icons/repost';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { RelayContext } from '@shared/relayProvider';
+
+import RepostIcon from '@icons/repost';
+
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { getEventHash, signEvent } from 'nostr-tools';
import { useContext, useEffect, useState } from 'react';
diff --git a/src/app/note/components/parent.tsx b/src/app/note/components/parent.tsx
index 91219c0e..36a34964 100644
--- a/src/app/note/components/parent.tsx
+++ b/src/app/note/components/parent.tsx
@@ -1,11 +1,14 @@
-import { Kind1 } from '@lume/app/note/components/kind1';
-import { Kind1063 } from '@lume/app/note/components/kind1063';
-import NoteMetadata from '@lume/app/note/components/metadata';
-import { NoteSkeleton } from '@lume/app/note/components/skeleton';
-import { NoteDefaultUser } from '@lume/app/note/components/user/default';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { noteParser } from '@lume/utils/parser';
+import { Kind1 } from '@app/note/components/kind1';
+import { Kind1063 } from '@app/note/components/kind1063';
+import NoteMetadata from '@app/note/components/metadata';
+import { NoteSkeleton } from '@app/note/components/skeleton';
+import { NoteDefaultUser } from '@app/note/components/user/default';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { noteParser } from '@utils/parser';
import { memo, useContext } from 'react';
import useSWRSubscription from 'swr/subscription';
diff --git a/src/app/note/components/preview/image.tsx b/src/app/note/components/preview/image.tsx
index 34c78081..7e408dc6 100644
--- a/src/app/note/components/preview/image.tsx
+++ b/src/app/note/components/preview/image.tsx
@@ -1,4 +1,4 @@
-import { Image } from '@lume/shared/image';
+import { Image } from '@shared/image';
export default function ImagePreview({ urls }: { urls: string[] }) {
return (
diff --git a/src/app/note/components/quoteRepost.tsx b/src/app/note/components/quoteRepost.tsx
index ca7bd9a3..64330605 100644
--- a/src/app/note/components/quoteRepost.tsx
+++ b/src/app/note/components/quoteRepost.tsx
@@ -1,7 +1,8 @@
-import { RootNote } from '@lume/app/note/components/rootNote';
-import { NoteRepostUser } from '@lume/app/note/components/user/repost';
-import { NoteWrapper } from '@lume/app/note/components/wrapper';
-import { getQuoteID } from '@lume/utils/transform';
+import { RootNote } from '@app/note/components/rootNote';
+import { NoteRepostUser } from '@app/note/components/user/repost';
+import { NoteWrapper } from '@app/note/components/wrapper';
+
+import { getQuoteID } from '@utils/transform';
export function NoteQuoteRepost({ event }: { event: any }) {
const rootID = getQuoteID(event.tags);
diff --git a/src/app/note/components/replies/form.tsx b/src/app/note/components/replies/form.tsx
index b7fc5f94..b23047ef 100644
--- a/src/app/note/components/replies/form.tsx
+++ b/src/app/note/components/replies/form.tsx
@@ -1,8 +1,10 @@
-import { Image } from '@lume/shared/image';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { Image } from '@shared/image';
+import { RelayContext } from '@shared/relayProvider';
+
+import { WRITEONLY_RELAYS } from '@stores/constants';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { getEventHash, signEvent } from 'nostr-tools';
import { useContext, useState } from 'react';
diff --git a/src/app/note/components/replies/item.tsx b/src/app/note/components/replies/item.tsx
index 83bb549f..23db1fcf 100644
--- a/src/app/note/components/replies/item.tsx
+++ b/src/app/note/components/replies/item.tsx
@@ -1,6 +1,7 @@
-import { Kind1 } from '@lume/app/note/components/kind1';
-import NoteReplyUser from '@lume/app/note/components/user/reply';
-import { noteParser } from '@lume/utils/parser';
+import { Kind1 } from '@app/note/components/kind1';
+import NoteReplyUser from '@app/note/components/user/reply';
+
+import { noteParser } from '@utils/parser';
export default function Reply({ data }: { data: any }) {
const content = noteParser(data);
diff --git a/src/app/note/components/replies/list.tsx b/src/app/note/components/replies/list.tsx
index e00f54ff..ab5b84d1 100644
--- a/src/app/note/components/replies/list.tsx
+++ b/src/app/note/components/replies/list.tsx
@@ -1,8 +1,11 @@
-import NoteReplyForm from '@lume/app/note/components/replies/form';
-import Reply from '@lume/app/note/components/replies/item';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { sortEvents } from '@lume/utils/transform';
+import NoteReplyForm from '@app/note/components/replies/form';
+import Reply from '@app/note/components/replies/item';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { sortEvents } from '@utils/transform';
import { useContext } from 'react';
import useSWRSubscription from 'swr/subscription';
diff --git a/src/app/note/components/rootNote.tsx b/src/app/note/components/rootNote.tsx
index 28835963..70234470 100644
--- a/src/app/note/components/rootNote.tsx
+++ b/src/app/note/components/rootNote.tsx
@@ -1,11 +1,14 @@
-import { Kind1 } from '@lume/app/note/components/kind1';
-import { Kind1063 } from '@lume/app/note/components/kind1063';
-import NoteMetadata from '@lume/app/note/components/metadata';
-import { NoteSkeleton } from '@lume/app/note/components/skeleton';
-import { NoteDefaultUser } from '@lume/app/note/components/user/default';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { noteParser } from '@lume/utils/parser';
+import { Kind1 } from '@app/note/components/kind1';
+import { Kind1063 } from '@app/note/components/kind1063';
+import NoteMetadata from '@app/note/components/metadata';
+import { NoteSkeleton } from '@app/note/components/skeleton';
+import { NoteDefaultUser } from '@app/note/components/user/default';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { noteParser } from '@utils/parser';
import { memo, useContext } from 'react';
import useSWRSubscription from 'swr/subscription';
diff --git a/src/app/note/components/user/default.tsx b/src/app/note/components/user/default.tsx
index ce70ecb0..f5a8230b 100644
--- a/src/app/note/components/user/default.tsx
+++ b/src/app/note/components/user/default.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
diff --git a/src/app/note/components/user/reply.tsx b/src/app/note/components/user/reply.tsx
index 16f1dd16..acb71a26 100644
--- a/src/app/note/components/user/reply.tsx
+++ b/src/app/note/components/user/reply.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
diff --git a/src/app/note/components/user/repost.tsx b/src/app/note/components/user/repost.tsx
index f28b6d89..fd084296 100644
--- a/src/app/note/components/user/repost.tsx
+++ b/src/app/note/components/user/repost.tsx
@@ -1,6 +1,8 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
diff --git a/src/app/note/layout.tsx b/src/app/note/layout.tsx
index 864acfa6..bb2cb9e9 100644
--- a/src/app/note/layout.tsx
+++ b/src/app/note/layout.tsx
@@ -1,6 +1,6 @@
-import AppHeader from '@lume/shared/appHeader';
-import MultiAccounts from '@lume/shared/multiAccounts';
-import Navigation from '@lume/shared/navigation';
+import AppHeader from '@shared/appHeader';
+import MultiAccounts from '@shared/multiAccounts';
+import Navigation from '@shared/navigation';
export function LayoutNewsfeed({ children }: { children: React.ReactNode }) {
return (
diff --git a/src/app/note/pages/index.page.tsx b/src/app/note/pages/index.page.tsx
index 7e89034e..e007b51c 100644
--- a/src/app/note/pages/index.page.tsx
+++ b/src/app/note/pages/index.page.tsx
@@ -1,11 +1,14 @@
-import { Kind1 } from '@lume/app/note/components/kind1';
-import NoteMetadata from '@lume/app/note/components/metadata';
-import RepliesList from '@lume/app/note/components/replies/list';
-import { NoteDefaultUser } from '@lume/app/note/components/user/default';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { usePageContext } from '@lume/utils/hooks/usePageContext';
-import { noteParser } from '@lume/utils/parser';
+import { Kind1 } from '@app/note/components/kind1';
+import NoteMetadata from '@app/note/components/metadata';
+import RepliesList from '@app/note/components/replies/list';
+import { NoteDefaultUser } from '@app/note/components/user/default';
+
+import { RelayContext } from '@shared/relayProvider';
+
+import { READONLY_RELAYS } from '@stores/constants';
+
+import { usePageContext } from '@utils/hooks/usePageContext';
+import { noteParser } from '@utils/parser';
import { useContext } from 'react';
import useSWRSubscription from 'swr/subscription';
diff --git a/src/app/daily/_default.page.tsx b/src/app/radar/_default.page.tsx
similarity index 100%
rename from src/app/daily/_default.page.tsx
rename to src/app/radar/_default.page.tsx
diff --git a/src/app/daily/components/header.tsx b/src/app/radar/components/header.tsx
similarity index 95%
rename from src/app/daily/components/header.tsx
rename to src/app/radar/components/header.tsx
index 84faf03e..ea6d72c7 100644
--- a/src/app/daily/components/header.tsx
+++ b/src/app/radar/components/header.tsx
@@ -1,4 +1,4 @@
-import { CreateViewModal } from '@lume/app/daily/components/views/createModal';
+import { CreateViewModal } from '@app/radar/components/views/createModal';
export function Header() {
return (
diff --git a/src/app/daily/components/views/createModal.tsx b/src/app/radar/components/views/createModal.tsx
similarity index 97%
rename from src/app/daily/components/views/createModal.tsx
rename to src/app/radar/components/views/createModal.tsx
index 95900128..6b1a7006 100644
--- a/src/app/daily/components/views/createModal.tsx
+++ b/src/app/radar/components/views/createModal.tsx
@@ -1,5 +1,5 @@
-import CancelIcon from '@lume/shared/icons/cancel';
-import PlusIcon from '@lume/shared/icons/plus';
+import CancelIcon from '@icons/cancel';
+import PlusIcon from '@icons/plus';
import { Dialog, Transition } from '@headlessui/react';
import { Fragment, useState } from 'react';
diff --git a/src/app/daily/layout.tsx b/src/app/radar/layout.tsx
similarity index 86%
rename from src/app/daily/layout.tsx
rename to src/app/radar/layout.tsx
index 864acfa6..bb2cb9e9 100644
--- a/src/app/daily/layout.tsx
+++ b/src/app/radar/layout.tsx
@@ -1,6 +1,6 @@
-import AppHeader from '@lume/shared/appHeader';
-import MultiAccounts from '@lume/shared/multiAccounts';
-import Navigation from '@lume/shared/navigation';
+import AppHeader from '@shared/appHeader';
+import MultiAccounts from '@shared/multiAccounts';
+import Navigation from '@shared/navigation';
export function LayoutNewsfeed({ children }: { children: React.ReactNode }) {
return (
diff --git a/src/app/daily/pages/index.page.tsx b/src/app/radar/pages/index.page.tsx
similarity index 92%
rename from src/app/daily/pages/index.page.tsx
rename to src/app/radar/pages/index.page.tsx
index f57b0ad1..a4a7b61e 100644
--- a/src/app/daily/pages/index.page.tsx
+++ b/src/app/radar/pages/index.page.tsx
@@ -1,8 +1,9 @@
-import { Header } from '@lume/app/daily/components/header';
-import { NoteBase } from '@lume/app/note/components/base';
-import { NoteQuoteRepost } from '@lume/app/note/components/quoteRepost';
-import { NoteSkeleton } from '@lume/app/note/components/skeleton';
-import { getNotes } from '@lume/utils/storage';
+import { NoteBase } from '@app/note/components/base';
+import { NoteQuoteRepost } from '@app/note/components/quoteRepost';
+import { NoteSkeleton } from '@app/note/components/skeleton';
+import { Header } from '@app/radar/components/header';
+
+import { getNotes } from '@utils/storage';
import { useInfiniteQuery } from '@tanstack/react-query';
import { useVirtualizer } from '@tanstack/react-virtual';
diff --git a/src/app/myspace/pages/index.page.tsx b/src/app/space/pages/index.page.tsx
similarity index 75%
rename from src/app/myspace/pages/index.page.tsx
rename to src/app/space/pages/index.page.tsx
index 4b08501d..139993ab 100644
--- a/src/app/myspace/pages/index.page.tsx
+++ b/src/app/space/pages/index.page.tsx
@@ -1,7 +1,7 @@
export function Page() {
return (
);
}
diff --git a/src/auth/components/user.tsx b/src/auth/components/user.tsx
index 67388749..71933e8e 100644
--- a/src/auth/components/user.tsx
+++ b/src/auth/components/user.tsx
@@ -1,7 +1,9 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { useProfile } from '@lume/utils/hooks/useProfile';
-import { shortenKey } from '@lume/utils/shortenKey';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
+
+import { useProfile } from '@utils/hooks/useProfile';
+import { shortenKey } from '@utils/shortenKey';
export default function User({ pubkey }: { pubkey: string }) {
const { user } = useProfile(pubkey);
diff --git a/src/auth/layout.tsx b/src/auth/layout.tsx
index 16cce9a5..04603387 100644
--- a/src/auth/layout.tsx
+++ b/src/auth/layout.tsx
@@ -1,5 +1,5 @@
-import ArrowLeftIcon from '@lume/shared/icons/arrowLeft';
-import ArrowRightIcon from '@lume/shared/icons/arrowRight';
+import ArrowLeftIcon from '@icons/arrowLeft';
+import ArrowRightIcon from '@icons/arrowRight';
import useSWR from 'swr';
diff --git a/src/auth/pages/create/index.page.tsx b/src/auth/pages/create/index.page.tsx
index 9c512ba0..bd57295b 100644
--- a/src/auth/pages/create/index.page.tsx
+++ b/src/auth/pages/create/index.page.tsx
@@ -1,6 +1,7 @@
-import EyeOffIcon from '@lume/shared/icons/eyeOff';
-import EyeOnIcon from '@lume/shared/icons/eyeOn';
-import { onboardingAtom } from '@lume/stores/onboarding';
+import EyeOffIcon from '@icons/eyeOff';
+import EyeOnIcon from '@icons/eyeOn';
+
+import { onboardingAtom } from '@stores/onboarding';
import { useSetAtom } from 'jotai';
import { generatePrivateKey, getPublicKey, nip19 } from 'nostr-tools';
diff --git a/src/auth/pages/create/step-2/index.page.tsx b/src/auth/pages/create/step-2/index.page.tsx
index 4a154f0d..306bc646 100644
--- a/src/auth/pages/create/step-2/index.page.tsx
+++ b/src/auth/pages/create/step-2/index.page.tsx
@@ -1,7 +1,8 @@
-import { AvatarUploader } from '@lume/shared/avatarUploader';
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
-import { onboardingAtom } from '@lume/stores/onboarding';
+import { AvatarUploader } from '@shared/avatarUploader';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
+import { onboardingAtom } from '@stores/onboarding';
import { useAtom } from 'jotai';
import { useEffect, useState } from 'react';
diff --git a/src/auth/pages/create/step-3/index.page.tsx b/src/auth/pages/create/step-3/index.page.tsx
index 17d15b91..83948a0c 100644
--- a/src/auth/pages/create/step-3/index.page.tsx
+++ b/src/auth/pages/create/step-3/index.page.tsx
@@ -1,16 +1,20 @@
-import User from '@lume/auth/components/user';
-import CheckCircleIcon from '@lume/shared/icons/checkCircle';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { WRITEONLY_RELAYS } from '@lume/stores/constants';
-import { onboardingAtom } from '@lume/stores/onboarding';
-import { createAccount, createPleb } from '@lume/utils/storage';
-import { arrayToNIP02 } from '@lume/utils/transform';
+import { RelayContext } from '@shared/relayProvider';
+
+import CheckCircleIcon from '@icons/checkCircle';
+
+import { WRITEONLY_RELAYS } from '@stores/constants';
+import { onboardingAtom } from '@stores/onboarding';
+
+import { createAccount, createPleb } from '@utils/storage';
+import { arrayToNIP02 } from '@utils/transform';
import { useAtom } from 'jotai';
import { getEventHash, signEvent } from 'nostr-tools';
import { useContext, useState } from 'react';
import { navigate } from 'vite-plugin-ssr/client/router';
+import User from '../../../components/user';
+
const initialList = [
{ pubkey: '82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2' },
{ pubkey: 'a341f45ff9758f570a21b000c17d4e53a3a497c8397f26c0e6d61e5acffc7a98' },
diff --git a/src/auth/pages/import/index.page.tsx b/src/auth/pages/import/index.page.tsx
index 4847827b..53a743d4 100644
--- a/src/auth/pages/import/index.page.tsx
+++ b/src/auth/pages/import/index.page.tsx
@@ -1,4 +1,4 @@
-import { onboardingAtom } from '@lume/stores/onboarding';
+import { onboardingAtom } from '@stores/onboarding';
import { useSetAtom } from 'jotai';
import { getPublicKey, nip19 } from 'nostr-tools';
diff --git a/src/auth/pages/import/step-2/index.page.tsx b/src/auth/pages/import/step-2/index.page.tsx
index e502245e..3d26a988 100644
--- a/src/auth/pages/import/step-2/index.page.tsx
+++ b/src/auth/pages/import/step-2/index.page.tsx
@@ -1,9 +1,11 @@
-import { Image } from '@lume/shared/image';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { DEFAULT_AVATAR, READONLY_RELAYS } from '@lume/stores/constants';
-import { onboardingAtom } from '@lume/stores/onboarding';
-import { shortenKey } from '@lume/utils/shortenKey';
-import { createAccount, createPleb } from '@lume/utils/storage';
+import { Image } from '@shared/image';
+import { RelayContext } from '@shared/relayProvider';
+
+import { DEFAULT_AVATAR, READONLY_RELAYS } from '@stores/constants';
+import { onboardingAtom } from '@stores/onboarding';
+
+import { shortenKey } from '@utils/shortenKey';
+import { createAccount, createPleb } from '@utils/storage';
import { useAtom } from 'jotai';
import { getPublicKey } from 'nostr-tools';
diff --git a/src/auth/pages/index/index.page.tsx b/src/auth/pages/index/index.page.tsx
index 32245392..3ecd0d33 100644
--- a/src/auth/pages/index/index.page.tsx
+++ b/src/auth/pages/index/index.page.tsx
@@ -1,5 +1,6 @@
-import ArrowRightIcon from '@lume/shared/icons/arrowRight';
-import { Image } from '@lume/shared/image';
+import { Image } from '@shared/image';
+
+import ArrowRightIcon from '@icons/arrowRight';
const PLEBS = [
'https://133332.xyz/p.jpg',
diff --git a/src/renderer/_default.page.client.tsx b/src/renderer/_default.page.client.tsx
index c2049ca8..2e90a9f9 100644
--- a/src/renderer/_default.page.client.tsx
+++ b/src/renderer/_default.page.client.tsx
@@ -1,11 +1,11 @@
-import '@lume/renderer/index.css';
-import { Shell } from '@lume/renderer/shell';
-import { PageContextClient } from '@lume/renderer/types';
-
import { StrictMode } from 'react';
import { Root, createRoot, hydrateRoot } from 'react-dom/client';
import 'vidstack/styles/defaults.css';
+import './index.css';
+import { Shell } from './shell';
+import { PageContextClient } from './types';
+
export const clientRouting = true;
export const hydrationCanBeAborted = true;
diff --git a/src/renderer/_default.page.server.tsx b/src/renderer/_default.page.server.tsx
index 386df152..fc1eec2c 100644
--- a/src/renderer/_default.page.server.tsx
+++ b/src/renderer/_default.page.server.tsx
@@ -1,10 +1,10 @@
-import { Shell } from '@lume/renderer/shell';
-import { PageContextServer } from '@lume/renderer/types';
-
import { StrictMode } from 'react';
import ReactDOMServer from 'react-dom/server';
import { dangerouslySkipEscape, escapeInject } from 'vite-plugin-ssr/server';
+import { Shell } from './shell';
+import { PageContextServer } from './types';
+
export const passToClient = ['pageProps'];
export function render(pageContext: PageContextServer) {
diff --git a/src/renderer/shell.tsx b/src/renderer/shell.tsx
index 42b13916..23f88709 100644
--- a/src/renderer/shell.tsx
+++ b/src/renderer/shell.tsx
@@ -1,10 +1,11 @@
-import { PageContext } from '@lume/renderer/types';
-import { RelayProvider } from '@lume/shared/relayProvider';
-import { PageContextProvider } from '@lume/utils/hooks/usePageContext';
+import { RelayProvider } from '@shared/relayProvider';
+
+import { PageContextProvider } from '@utils/hooks/usePageContext';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { LayoutDefault } from './layoutDefault';
+import { PageContext } from './types';
const queryClient = new QueryClient();
diff --git a/src/shared/accounts/active.tsx b/src/shared/accounts/active.tsx
index 9d2d0c08..cdf21256 100644
--- a/src/shared/accounts/active.tsx
+++ b/src/shared/accounts/active.tsx
@@ -1,5 +1,6 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
export default function ActiveAccount({ user }: { user: any }) {
const userData = JSON.parse(user.metadata);
diff --git a/src/shared/accounts/inactive.tsx b/src/shared/accounts/inactive.tsx
index c571649f..49b4b906 100644
--- a/src/shared/accounts/inactive.tsx
+++ b/src/shared/accounts/inactive.tsx
@@ -1,5 +1,6 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR } from '@stores/constants';
export default function InactiveAccount({ user }: { user: any }) {
const userData = JSON.parse(user.metadata);
diff --git a/src/shared/activeLink.tsx b/src/shared/activeLink.tsx
index 4d2c4487..b3f1d7be 100644
--- a/src/shared/activeLink.tsx
+++ b/src/shared/activeLink.tsx
@@ -1,4 +1,4 @@
-import { usePageContext } from '@lume/utils/hooks/usePageContext';
+import { usePageContext } from '@utils/hooks/usePageContext';
import { twMerge } from 'tailwind-merge';
diff --git a/src/shared/appHeader.tsx b/src/shared/appHeader.tsx
index 9ad4187c..5826c0a8 100644
--- a/src/shared/appHeader.tsx
+++ b/src/shared/appHeader.tsx
@@ -1,6 +1,6 @@
-import ArrowLeftIcon from '@lume/shared/icons/arrowLeft';
-import ArrowRightIcon from '@lume/shared/icons/arrowRight';
-import RefreshIcon from '@lume/shared/icons/refresh';
+import ArrowLeftIcon from '@icons/arrowLeft';
+import ArrowRightIcon from '@icons/arrowRight';
+import RefreshIcon from '@icons/refresh';
export default function AppHeader() {
const goBack = () => {
diff --git a/src/shared/avatarUploader.tsx b/src/shared/avatarUploader.tsx
index efc2c735..4641c60d 100644
--- a/src/shared/avatarUploader.tsx
+++ b/src/shared/avatarUploader.tsx
@@ -1,4 +1,4 @@
-import { createBlobFromFile } from '@lume/utils/createBlobFromFile';
+import { createBlobFromFile } from '@utils/createBlobFromFile';
import { open } from '@tauri-apps/api/dialog';
import { Body, fetch } from '@tauri-apps/api/http';
diff --git a/src/shared/composer/modal.tsx b/src/shared/composer/modal.tsx
index b81f7a7d..2d2ed562 100644
--- a/src/shared/composer/modal.tsx
+++ b/src/shared/composer/modal.tsx
@@ -1,11 +1,14 @@
-import { Post } from '@lume/shared/composer/types/post';
-import { User } from '@lume/shared/composer/user';
-import CancelIcon from '@lume/shared/icons/cancel';
-import ChevronDownIcon from '@lume/shared/icons/chevronDown';
-import ChevronRightIcon from '@lume/shared/icons/chevronRight';
-import ComposeIcon from '@lume/shared/icons/compose';
-import { composerAtom } from '@lume/stores/composer';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
+import { Post } from '@shared/composer/types/post';
+import { User } from '@shared/composer/user';
+
+import CancelIcon from '@icons/cancel';
+import ChevronDownIcon from '@icons/chevronDown';
+import ChevronRightIcon from '@icons/chevronRight';
+import ComposeIcon from '@icons/compose';
+
+import { composerAtom } from '@stores/composer';
+
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
import { Dialog, Transition } from '@headlessui/react';
import { useAtom } from 'jotai';
diff --git a/src/shared/composer/user.tsx b/src/shared/composer/user.tsx
index 6f177781..779a7446 100644
--- a/src/shared/composer/user.tsx
+++ b/src/shared/composer/user.tsx
@@ -1,5 +1,6 @@
-import { Image } from '@lume/shared/image';
-import { DEFAULT_AVATAR, IMGPROXY_URL } from '@lume/stores/constants';
+import { Image } from '@shared/image';
+
+import { DEFAULT_AVATAR, IMGPROXY_URL } from '@stores/constants';
export function User({ data }: { data: any }) {
const metadata = JSON.parse(data.metadata);
diff --git a/src/shared/eventCollector.tsx b/src/shared/eventCollector.tsx
index 5a48134c..5f413f43 100644
--- a/src/shared/eventCollector.tsx
+++ b/src/shared/eventCollector.tsx
@@ -1,11 +1,14 @@
-import HeartBeatIcon from '@lume/shared/icons/heartbeat';
-import { RelayContext } from '@lume/shared/relayProvider';
-import { READONLY_RELAYS } from '@lume/stores/constants';
-import { hasNewerNoteAtom } from '@lume/stores/note';
-import { dateToUnix } from '@lume/utils/getDate';
-import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
-import { createChat, createNote, updateAccount } from '@lume/utils/storage';
-import { getParentID, nip02ToArray } from '@lume/utils/transform';
+import { RelayContext } from '@shared/relayProvider';
+
+import HeartBeatIcon from '@icons/heartbeat';
+
+import { READONLY_RELAYS } from '@stores/constants';
+import { hasNewerNoteAtom } from '@stores/note';
+
+import { dateToUnix } from '@utils/date';
+import { useActiveAccount } from '@utils/hooks/useActiveAccount';
+import { createChat, createNote, updateAccount } from '@utils/storage';
+import { getParentID, nip02ToArray } from '@utils/transform';
import { useSetAtom } from 'jotai';
import { useContext, useRef } from 'react';
diff --git a/src/shared/form/imagePicker.tsx b/src/shared/form/imagePicker.tsx
index aed574ca..a4ae3d7f 100644
--- a/src/shared/form/imagePicker.tsx
+++ b/src/shared/form/imagePicker.tsx
@@ -1,8 +1,10 @@
-import PlusIcon from '@lume/shared/icons/plus';
-import { channelContentAtom } from '@lume/stores/channel';
-import { chatContentAtom } from '@lume/stores/chat';
-import { noteContentAtom } from '@lume/stores/note';
-import { createBlobFromFile } from '@lume/utils/createBlobFromFile';
+import PlusIcon from '@icons/plus';
+
+import { channelContentAtom } from '@stores/channel';
+import { chatContentAtom } from '@stores/chat';
+import { noteContentAtom } from '@stores/note';
+
+import { createBlobFromFile } from '@utils/createBlobFromFile';
import { open } from '@tauri-apps/api/dialog';
import { Body, fetch } from '@tauri-apps/api/http';
diff --git a/src/shared/image.tsx b/src/shared/image.tsx
index 21ed05f9..dfa37d4d 100644
--- a/src/shared/image.tsx
+++ b/src/shared/image.tsx
@@ -1,4 +1,4 @@
-import { DEFAULT_AVATAR } from '@lume/stores/constants';
+import { DEFAULT_AVATAR } from '@stores/constants';
export function Image(props) {
const addImageFallback = (event) => {
diff --git a/src/shared/multiAccounts.tsx b/src/shared/multiAccounts.tsx
index 92314496..1c0dd9b8 100644
--- a/src/shared/multiAccounts.tsx
+++ b/src/shared/multiAccounts.tsx
@@ -1,9 +1,12 @@
-import ActiveAccount from '@lume/shared/accounts/active';
-import InactiveAccount from '@lume/shared/accounts/inactive';
-import BellIcon from '@lume/shared/icons/bell';
-import PlusIcon from '@lume/shared/icons/plus';
-import { APP_VERSION } from '@lume/stores/constants';
-import { getAccounts, getActiveAccount } from '@lume/utils/storage';
+import ActiveAccount from '@shared/accounts/active';
+import InactiveAccount from '@shared/accounts/inactive';
+
+import BellIcon from '@icons/bell';
+import PlusIcon from '@icons/plus';
+
+import { APP_VERSION } from '@stores/constants';
+
+import { getAccounts, getActiveAccount } from '@utils/storage';
import useSWR from 'swr';
diff --git a/src/shared/navigation.tsx b/src/shared/navigation.tsx
index b4654a9c..31e09996 100644
--- a/src/shared/navigation.tsx
+++ b/src/shared/navigation.tsx
@@ -1,12 +1,14 @@
-import ChannelsList from '@lume/app/channel/components/list';
-import ChatsList from '@lume/app/chat/components/list';
-import ActiveLink from '@lume/shared/activeLink';
-import { ComposerModal } from '@lume/shared/composer/modal';
-import EventCollector from '@lume/shared/eventCollector';
-import MyspaceIcon from '@lume/shared/icons/myspace';
-import NavArrowDownIcon from '@lume/shared/icons/navArrowDown';
-import ThreadsIcon from '@lume/shared/icons/threads';
-import WorldIcon from '@lume/shared/icons/world';
+import ChannelsList from '@app/channel/components/list';
+import ChatsList from '@app/chat/components/list';
+
+import ActiveLink from '@shared/activeLink';
+import { ComposerModal } from '@shared/composer/modal';
+import EventCollector from '@shared/eventCollector';
+
+import MyspaceIcon from '@icons/myspace';
+import NavArrowDownIcon from '@icons/navArrowDown';
+import ThreadsIcon from '@icons/threads';
+import WorldIcon from '@icons/world';
import { Disclosure } from '@headlessui/react';
@@ -24,14 +26,14 @@ export default function Navigation() {