diff --git a/packages/pl-api/lib/directory-client.ts b/packages/pl-api/lib/directory-client.ts index 2a41b061c..ae11e1b8c 100644 --- a/packages/pl-api/lib/directory-client.ts +++ b/packages/pl-api/lib/directory-client.ts @@ -1,6 +1,9 @@ import * as v from 'valibot'; -import { directoryCategorySchema, directoryLanguageSchema, directoryServerSchema, directoryStatisticsPeriodSchema } from './entities'; +import { directoryCategorySchema } from './entities/directory/category'; +import { directoryLanguageSchema } from './entities/directory/language'; +import { directoryServerSchema } from './entities/directory/server'; +import { directoryStatisticsPeriodSchema } from './entities/directory/statistics-period'; import { filteredArray } from './entities/utils'; import request from './request'; diff --git a/packages/pl-api/lib/entities/conversation.ts b/packages/pl-api/lib/entities/conversation.ts index 8bdb375f1..50cea95bb 100644 --- a/packages/pl-api/lib/entities/conversation.ts +++ b/packages/pl-api/lib/entities/conversation.ts @@ -1,9 +1,9 @@ import * as v from 'valibot'; +import { accountSchema } from './account'; +import { statusSchema } from './status'; import { filteredArray } from './utils'; -import { accountSchema, statusSchema } from '.'; - /** @see {@link https://docs.joinmastodon.org/entities/Conversation} */ const conversationSchema = v.object({ id: v.string(), diff --git a/packages/pl-api/lib/entities/notification-request.ts b/packages/pl-api/lib/entities/notification-request.ts index d1d24a91e..cdef784d2 100644 --- a/packages/pl-api/lib/entities/notification-request.ts +++ b/packages/pl-api/lib/entities/notification-request.ts @@ -1,9 +1,9 @@ import * as v from 'valibot'; +import { accountSchema } from './account'; +import { statusSchema } from './status'; import { datetimeSchema } from './utils'; -import { accountSchema, statusSchema } from '.'; - /** @see {@link https://docs.joinmastodon.org/entities/NotificationRequest} */ const notificationRequestSchema = v.object({ id: v.string(), diff --git a/packages/pl-api/lib/entities/search.ts b/packages/pl-api/lib/entities/search.ts index a8b0d4db6..250644d10 100644 --- a/packages/pl-api/lib/entities/search.ts +++ b/packages/pl-api/lib/entities/search.ts @@ -1,9 +1,11 @@ import * as v from 'valibot'; +import { accountSchema } from './account'; +import { groupSchema } from './group'; +import { statusSchema } from './status'; +import { tagSchema } from './tag'; import { filteredArray } from './utils'; -import { accountSchema, groupSchema, statusSchema, tagSchema } from '.'; - /** @see {@link https://docs.joinmastodon.org/entities/Search} */ const searchSchema = v.object({ accounts: filteredArray(accountSchema), diff --git a/packages/pl-api/lib/entities/utils.ts b/packages/pl-api/lib/entities/utils.ts index 78fb1b1aa..190522919 100644 --- a/packages/pl-api/lib/entities/utils.ts +++ b/packages/pl-api/lib/entities/utils.ts @@ -31,7 +31,7 @@ const mimeSchema = v.pipe(v.string(), v.regex(/^\w+\/[-+.\w]+$/)); const coerceObject = (shape: T) => v.pipe( v.any(), - v.transform((input) => typeof input === 'object' ? input : {}), + v.transform((input) => typeof input === 'object' && input !== null ? input : {}), v.object(shape), ); diff --git a/packages/pl-api/lib/features.ts b/packages/pl-api/lib/features.ts index 2fb4bceaf..f1056035f 100644 --- a/packages/pl-api/lib/features.ts +++ b/packages/pl-api/lib/features.ts @@ -2,7 +2,7 @@ import semverCoerce from 'semver/functions/coerce'; import gte from 'semver/functions/gte'; import semverParse from 'semver/functions/parse'; -import type { Instance } from './entities'; +import type { Instance } from './entities/instance'; /** Truthy array convenience function */ const any = (arr: Array): boolean => arr.some(Boolean); diff --git a/packages/pl-api/package.json b/packages/pl-api/package.json index 2fe3a57e9..f9cdc9b72 100644 --- a/packages/pl-api/package.json +++ b/packages/pl-api/package.json @@ -1,6 +1,6 @@ { "name": "pl-api", - "version": "0.1.1", + "version": "0.1.2", "type": "module", "homepage": "https://github.com/mkljczk/pl-fe/tree/fork/packages/pl-api", "repository": { diff --git a/packages/pl-fe/package.json b/packages/pl-fe/package.json index 1b93ddc7f..0f70a3d52 100644 --- a/packages/pl-fe/package.json +++ b/packages/pl-fe/package.json @@ -38,7 +38,7 @@ "not dead" ], "dependencies": { - "@emoji-mart/data": "^1.1.2", + "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.26.24", "@fontsource/inter": "^5.1.0", "@fontsource/noto-sans-javanese": "^5.1.0", @@ -67,6 +67,7 @@ "@tailwindcss/typography": "^0.5.15", "@tanstack/react-query": "^5.59.0", "@tanstack/react-virtual": "^3.10.8", + "@twemoji/svg": "^15.0.0", "@uidotdev/usehooks": "^2.4.1", "@vitejs/plugin-react": "^4.3.2", "autoprefixer": "^10.4.20", @@ -78,8 +79,8 @@ "cryptocurrency-icons": "^0.18.1", "cssnano": "^6.0.0", "detect-passive-events": "^2.0.0", - "emoji-datasource": "14.0.0", - "emoji-mart": "^5.5.2", + "emoji-datasource": "15.0.1", + "emoji-mart": "^5.6.0", "escape-html": "^1.0.3", "exifr": "^7.1.3", "fasttext.wasm.js": "^1.0.0", @@ -101,7 +102,7 @@ "mini-css-extract-plugin": "^2.9.1", "multiselect-react-dropdown": "^2.0.25", "path-browserify": "^1.0.1", - "pl-api": "^0.1.1", + "pl-api": "^0.1.2", "pl-hooks": "^0.0.1", "postcss": "^8.4.47", "process": "^0.11.10", @@ -134,7 +135,6 @@ "stringz": "^2.1.0", "tiny-queue": "^0.2.1", "tslib": "^2.7.0", - "twemoji": "https://github.com/twitter/twemoji#v14.0.2", "type-fest": "^4.26.1", "typescript": "^5.6.2", "util": "^0.12.5", diff --git a/packages/pl-fe/src/actions/accounts.test.ts b/packages/pl-fe/src/actions/accounts.test.ts index d2cff37de..ef59f6708 100644 --- a/packages/pl-fe/src/actions/accounts.test.ts +++ b/packages/pl-fe/src/actions/accounts.test.ts @@ -3,7 +3,7 @@ import { Map as ImmutableMap } from 'immutable'; import { __stub } from 'pl-fe/api'; import { buildInstance, buildRelationship } from 'pl-fe/jest/factory'; import { mockStore, rootState } from 'pl-fe/jest/test-helpers'; -import { normalizeAccount } from 'pl-fe/normalizers'; +import { normalizeAccount } from 'pl-fe/normalizers/account'; import { ListRecord, ReducerRecord } from 'pl-fe/reducers/user-lists'; import { diff --git a/packages/pl-fe/src/actions/aliases.ts b/packages/pl-fe/src/actions/aliases.ts index 98f9791db..76c5fc33f 100644 --- a/packages/pl-fe/src/actions/aliases.ts +++ b/packages/pl-fe/src/actions/aliases.ts @@ -6,7 +6,7 @@ import toast from 'pl-fe/toast'; import { isLoggedIn } from 'pl-fe/utils/auth'; import type { Account as BaseAccount } from 'pl-api'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; import type { AppDispatch, RootState } from 'pl-fe/store'; const ALIASES_FETCH_REQUEST = 'ALIASES_FETCH_REQUEST' as const; diff --git a/packages/pl-fe/src/actions/chats.ts b/packages/pl-fe/src/actions/chats.ts index d3835c1db..cfccec407 100644 --- a/packages/pl-fe/src/actions/chats.ts +++ b/packages/pl-fe/src/actions/chats.ts @@ -1,5 +1,5 @@ import { changeSetting } from 'pl-fe/actions/settings'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import type { AppDispatch, RootState } from 'pl-fe/store'; diff --git a/packages/pl-fe/src/actions/compose.ts b/packages/pl-fe/src/actions/compose.ts index 506dee075..bc8d593f7 100644 --- a/packages/pl-fe/src/actions/compose.ts +++ b/packages/pl-fe/src/actions/compose.ts @@ -8,7 +8,8 @@ import emojiSearch from 'pl-fe/features/emoji/search'; import { Language } from 'pl-fe/features/preferences'; import { selectAccount, selectOwnAccount, makeGetAccount } from 'pl-fe/selectors'; import { tagHistory } from 'pl-fe/settings'; -import { useModalsStore, useSettingsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import toast from 'pl-fe/toast'; import { isLoggedIn } from 'pl-fe/utils/auth'; @@ -21,7 +22,8 @@ import type { EditorState } from 'lexical'; import type { Account as BaseAccount, BackendVersion, CreateStatusParams, Group, MediaAttachment, Status as BaseStatus, Tag, Poll, ScheduledStatus } from 'pl-api'; import type { AutoSuggestion } from 'pl-fe/components/autosuggest-input'; import type { Emoji } from 'pl-fe/features/emoji'; -import type { Account, Status } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; +import type { Status } from 'pl-fe/normalizers/status'; import type { AppDispatch, RootState } from 'pl-fe/store'; import type { History } from 'pl-fe/types/history'; diff --git a/packages/pl-fe/src/actions/domain-blocks.ts b/packages/pl-fe/src/actions/domain-blocks.ts index be29cdc8b..4ab52f7ef 100644 --- a/packages/pl-fe/src/actions/domain-blocks.ts +++ b/packages/pl-fe/src/actions/domain-blocks.ts @@ -4,7 +4,7 @@ import { isLoggedIn } from 'pl-fe/utils/auth'; import type { PaginatedResponse } from 'pl-api'; import type { EntityStore } from 'pl-fe/entity-store/types'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; import type { AppDispatch, RootState } from 'pl-fe/store'; const DOMAIN_BLOCK_REQUEST = 'DOMAIN_BLOCK_REQUEST' as const; diff --git a/packages/pl-fe/src/actions/events.ts b/packages/pl-fe/src/actions/events.ts index 6bb890aa0..46bdee32b 100644 --- a/packages/pl-fe/src/actions/events.ts +++ b/packages/pl-fe/src/actions/events.ts @@ -3,7 +3,7 @@ import { defineMessages } from 'react-intl'; import { STATUS_FETCH_SOURCE_FAIL, STATUS_FETCH_SOURCE_REQUEST, STATUS_FETCH_SOURCE_SUCCESS } from 'pl-fe/actions/statuses'; import { getClient } from 'pl-fe/api'; -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; import toast from 'pl-fe/toast'; import type { Account, CreateEventParams, Location, MediaAttachment, PaginatedResponse, Status } from 'pl-api'; diff --git a/packages/pl-fe/src/actions/export-data.ts b/packages/pl-fe/src/actions/export-data.ts index 2c26861cd..d91b1760b 100644 --- a/packages/pl-fe/src/actions/export-data.ts +++ b/packages/pl-fe/src/actions/export-data.ts @@ -1,7 +1,7 @@ import { defineMessages } from 'react-intl'; import { getClient } from 'pl-fe/api'; -import { normalizeAccount } from 'pl-fe/normalizers'; +import { normalizeAccount } from 'pl-fe/normalizers/account'; import toast from 'pl-fe/toast'; import type { Account, PaginatedResponse } from 'pl-api'; diff --git a/packages/pl-fe/src/actions/importer/index.ts b/packages/pl-fe/src/actions/importer/index.ts index f1d1955ef..d86ccb65f 100644 --- a/packages/pl-fe/src/actions/importer/index.ts +++ b/packages/pl-fe/src/actions/importer/index.ts @@ -1,6 +1,7 @@ import { importEntities } from 'pl-fe/entity-store/actions'; import { Entities } from 'pl-fe/entity-store/entities'; -import { normalizeAccount, normalizeGroup, type Account, type Group } from 'pl-fe/normalizers'; +import { normalizeAccount, type Account } from 'pl-fe/normalizers/account'; +import { normalizeGroup, type Group } from 'pl-fe/normalizers/group'; import type { Account as BaseAccount, Group as BaseGroup, Poll, Status as BaseStatus } from 'pl-api'; import type { AppDispatch } from 'pl-fe/store'; diff --git a/packages/pl-fe/src/actions/interactions.ts b/packages/pl-fe/src/actions/interactions.ts index a4ffc1b31..c896bb04c 100644 --- a/packages/pl-fe/src/actions/interactions.ts +++ b/packages/pl-fe/src/actions/interactions.ts @@ -2,7 +2,7 @@ import { importEntities } from 'pl-hooks'; import { defineMessages } from 'react-intl'; import { getClient } from 'pl-fe/api'; -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; import toast, { type IToastOptions } from 'pl-fe/toast'; import { isLoggedIn } from 'pl-fe/utils/auth'; diff --git a/packages/pl-fe/src/actions/me.ts b/packages/pl-fe/src/actions/me.ts index 31ae41515..48529e8c4 100644 --- a/packages/pl-fe/src/actions/me.ts +++ b/packages/pl-fe/src/actions/me.ts @@ -4,7 +4,7 @@ import { getClient } from 'pl-fe/api'; import { selectAccount } from 'pl-fe/selectors'; import { setSentryAccount } from 'pl-fe/sentry'; import KVStore from 'pl-fe/storage/kv-store'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import { getAuthUserId, getAuthUserUrl } from 'pl-fe/utils/auth'; import { loadCredentials } from './auth'; diff --git a/packages/pl-fe/src/actions/modals.ts b/packages/pl-fe/src/actions/modals.ts index e0049bf26..8b15c3e64 100644 --- a/packages/pl-fe/src/actions/modals.ts +++ b/packages/pl-fe/src/actions/modals.ts @@ -1,4 +1,4 @@ -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; import type { ModalType } from 'pl-fe/features/ui/components/modal-root'; import type { OpenModalProps } from 'pl-fe/stores/modals'; diff --git a/packages/pl-fe/src/actions/moderation.tsx b/packages/pl-fe/src/actions/moderation.tsx index 9ce098397..ddb490f2f 100644 --- a/packages/pl-fe/src/actions/moderation.tsx +++ b/packages/pl-fe/src/actions/moderation.tsx @@ -4,10 +4,11 @@ import { defineMessages, IntlShape } from 'react-intl'; import { fetchAccountByUsername } from 'pl-fe/actions/accounts'; import { deactivateUser, deleteUser, deleteStatus, toggleStatusSensitivity } from 'pl-fe/actions/admin'; import OutlineBox from 'pl-fe/components/outline-box'; -import { Stack, Text } from 'pl-fe/components/ui'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import AccountContainer from 'pl-fe/containers/account-container'; import { selectAccount } from 'pl-fe/selectors'; -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; import toast from 'pl-fe/toast'; import type { AppDispatch, RootState } from 'pl-fe/store'; diff --git a/packages/pl-fe/src/actions/mutes.ts b/packages/pl-fe/src/actions/mutes.ts index 5fcd5527d..559045beb 100644 --- a/packages/pl-fe/src/actions/mutes.ts +++ b/packages/pl-fe/src/actions/mutes.ts @@ -1,6 +1,6 @@ -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; import type { AppDispatch } from 'pl-fe/store'; const MUTES_INIT_MODAL = 'MUTES_INIT_MODAL'; diff --git a/packages/pl-fe/src/actions/notifications.test.ts b/packages/pl-fe/src/actions/notifications.test.ts index cef506110..2949fe46a 100644 --- a/packages/pl-fe/src/actions/notifications.test.ts +++ b/packages/pl-fe/src/actions/notifications.test.ts @@ -2,7 +2,7 @@ import { OrderedMap as ImmutableOrderedMap } from 'immutable'; import { __stub } from 'pl-fe/api'; import { mockStore, rootState } from 'pl-fe/jest/test-helpers'; -import { normalizeNotification } from 'pl-fe/normalizers'; +import { normalizeNotification } from 'pl-fe/normalizers/notification'; import { markReadNotifications } from './notifications'; diff --git a/packages/pl-fe/src/actions/notifications.ts b/packages/pl-fe/src/actions/notifications.ts index b4590e8e9..3eff6b768 100644 --- a/packages/pl-fe/src/actions/notifications.ts +++ b/packages/pl-fe/src/actions/notifications.ts @@ -1,14 +1,12 @@ import IntlMessageFormat from 'intl-messageformat'; import 'intl-pluralrules'; -import { importEntities } from 'pl-hooks'; +import { importEntities, queryClient } from 'pl-hooks'; import { defineMessages } from 'react-intl'; import { FILTER_TYPES, type FilterType } from 'pl-fe/features/notifications'; import { getNotificationStatus } from 'pl-fe/features/notifications/components/notification'; -import { normalizeNotification } from 'pl-fe/normalizers'; -import { queryClient } from 'pl-fe/queries/client'; -// import { getFilters, regexFromFilters } from 'pl-fe/selectors'; -import { useSettingsStore } from 'pl-fe/stores'; +import { normalizeNotification } from 'pl-fe/normalizers/notification'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import { unescapeHTML } from 'pl-fe/utils/html'; import { joinPublicPath } from 'pl-fe/utils/static'; diff --git a/packages/pl-fe/src/actions/pl-fe.ts b/packages/pl-fe/src/actions/pl-fe.ts index f769b3494..55b64ef17 100644 --- a/packages/pl-fe/src/actions/pl-fe.ts +++ b/packages/pl-fe/src/actions/pl-fe.ts @@ -2,9 +2,9 @@ import { createSelector } from 'reselect'; import { getHost } from 'pl-fe/actions/instance'; import { getClient, staticFetch } from 'pl-fe/api'; -import { normalizePlFeConfig } from 'pl-fe/normalizers'; +import { normalizePlFeConfig } from 'pl-fe/normalizers/pl-fe/pl-fe-config'; import KVStore from 'pl-fe/storage/kv-store'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import type { AppDispatch, RootState } from 'pl-fe/store'; import type { APIEntity } from 'pl-fe/types/entities'; diff --git a/packages/pl-fe/src/actions/remote-timeline.ts b/packages/pl-fe/src/actions/remote-timeline.ts index 7a4109836..5d431f08b 100644 --- a/packages/pl-fe/src/actions/remote-timeline.ts +++ b/packages/pl-fe/src/actions/remote-timeline.ts @@ -1,5 +1,5 @@ import { changeSetting } from 'pl-fe/actions/settings'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import type { AppDispatch, RootState } from 'pl-fe/store'; diff --git a/packages/pl-fe/src/actions/reports.ts b/packages/pl-fe/src/actions/reports.ts index 457403a5a..12cf159fe 100644 --- a/packages/pl-fe/src/actions/reports.ts +++ b/packages/pl-fe/src/actions/reports.ts @@ -1,7 +1,8 @@ import { getClient } from 'pl-fe/api'; -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; -import type { Account, Status } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; +import type { Status } from 'pl-fe/normalizers/status'; import type { AppDispatch, RootState } from 'pl-fe/store'; const REPORT_SUBMIT_REQUEST = 'REPORT_SUBMIT_REQUEST' as const; diff --git a/packages/pl-fe/src/actions/search.ts b/packages/pl-fe/src/actions/search.ts index d6b5b1833..4a0b5b52d 100644 --- a/packages/pl-fe/src/actions/search.ts +++ b/packages/pl-fe/src/actions/search.ts @@ -1,7 +1,7 @@ import { importEntities } from 'pl-hooks'; import { getClient } from 'pl-fe/api'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import { fetchRelationships } from './accounts'; diff --git a/packages/pl-fe/src/actions/settings.ts b/packages/pl-fe/src/actions/settings.ts index 4728b33d3..341f919cf 100644 --- a/packages/pl-fe/src/actions/settings.ts +++ b/packages/pl-fe/src/actions/settings.ts @@ -5,7 +5,7 @@ import { getClient } from 'pl-fe/api'; import messages from 'pl-fe/messages'; import { queryClient } from 'pl-fe/queries/client'; import KVStore from 'pl-fe/storage/kv-store'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import toast from 'pl-fe/toast'; import { isLoggedIn } from 'pl-fe/utils/auth'; diff --git a/packages/pl-fe/src/actions/statuses.ts b/packages/pl-fe/src/actions/statuses.ts index 92399a447..f85e326e2 100644 --- a/packages/pl-fe/src/actions/statuses.ts +++ b/packages/pl-fe/src/actions/statuses.ts @@ -1,7 +1,8 @@ import { importEntities } from 'pl-hooks'; import { getClient } from 'pl-fe/api'; -import { useModalsStore, useSettingsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import { isLoggedIn } from 'pl-fe/utils/auth'; import { shouldHaveCard } from 'pl-fe/utils/status'; @@ -10,7 +11,7 @@ import { importFetchedStatus } from './importer'; import { deleteFromTimelines } from './timelines'; import type { CreateStatusParams, Status as BaseStatus } from 'pl-api'; -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; import type { AppDispatch, RootState } from 'pl-fe/store'; import type { IntlShape } from 'react-intl'; diff --git a/packages/pl-fe/src/actions/sw.ts b/packages/pl-fe/src/actions/sw.ts deleted file mode 100644 index 346864bda..000000000 --- a/packages/pl-fe/src/actions/sw.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** Sets the ServiceWorker updating state. */ -const SW_UPDATING = 'SW_UPDATING' as const; - -/** Dispatch when the ServiceWorker is being updated to display a loading screen. */ -const setSwUpdating = (isUpdating: boolean) => ({ - type: SW_UPDATING, - isUpdating, -}); - -type SwAction = ReturnType; - -export { - SW_UPDATING, - setSwUpdating, - type SwAction, -}; diff --git a/packages/pl-fe/src/actions/timelines.ts b/packages/pl-fe/src/actions/timelines.ts index 511d16fd7..4e8a04f21 100644 --- a/packages/pl-fe/src/actions/timelines.ts +++ b/packages/pl-fe/src/actions/timelines.ts @@ -3,7 +3,7 @@ import { importEntities } from 'pl-hooks'; import { getLocale } from 'pl-fe/actions/settings'; import { getClient } from 'pl-fe/api'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import { shouldFilter } from 'pl-fe/utils/timelines'; import type { PaginatedResponse, Status as BaseStatus, PublicTimelineParams, HomeTimelineParams, ListTimelineParams, HashtagTimelineParams, GetAccountStatusesParams, GroupTimelineParams } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/accounts/useAccount.ts b/packages/pl-fe/src/api/hooks/accounts/useAccount.ts index 783632a6b..70a97262d 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useAccount.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useAccount.ts @@ -2,9 +2,12 @@ import { useEffect, useMemo } from 'react'; import { useHistory } from 'react-router-dom'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntity } from 'pl-fe/entity-store/hooks'; -import { useAppSelector, useClient, useFeatures, useLoggedIn } from 'pl-fe/hooks'; -import { type Account, normalizeAccount } from 'pl-fe/normalizers'; +import { useEntity } from 'pl-fe/entity-store/hooks/useEntity'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; +import { type Account, normalizeAccount } from 'pl-fe/normalizers/account'; import { useAccountScrobble } from './useAccountScrobble'; import { useRelationship } from './useRelationship'; diff --git a/packages/pl-fe/src/api/hooks/accounts/useAccountList.ts b/packages/pl-fe/src/api/hooks/accounts/useAccountList.ts index 12e036c56..558be5cb2 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useAccountList.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useAccountList.ts @@ -1,8 +1,8 @@ import { useInfiniteQuery } from '@tanstack/react-query'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useClient } from 'pl-fe/hooks'; -import { type Account, normalizeAccount } from 'pl-fe/normalizers'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { type Account, normalizeAccount } from 'pl-fe/normalizers/account'; import { flattenPages } from 'pl-fe/utils/queries'; import { useRelationships } from './useRelationships'; diff --git a/packages/pl-fe/src/api/hooks/accounts/useAccountLookup.ts b/packages/pl-fe/src/api/hooks/accounts/useAccountLookup.ts index 444e03faa..d0a050262 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useAccountLookup.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useAccountLookup.ts @@ -2,9 +2,11 @@ import { useEffect } from 'react'; import { useHistory } from 'react-router-dom'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntityLookup } from 'pl-fe/entity-store/hooks'; -import { useClient, useFeatures, useLoggedIn } from 'pl-fe/hooks'; -import { type Account, normalizeAccount } from 'pl-fe/normalizers'; +import { useEntityLookup } from 'pl-fe/entity-store/hooks/useEntityLookup'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; +import { type Account, normalizeAccount } from 'pl-fe/normalizers/account'; import { useAccountScrobble } from './useAccountScrobble'; import { useRelationship } from './useRelationship'; diff --git a/packages/pl-fe/src/api/hooks/accounts/useAccountScrobble.ts b/packages/pl-fe/src/api/hooks/accounts/useAccountScrobble.ts index bdf568b9c..86269a3ed 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useAccountScrobble.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useAccountScrobble.ts @@ -1,6 +1,7 @@ import { useQuery } from '@tanstack/react-query'; -import { useClient, useFeatures } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; import type { Scrobble } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/accounts/useFollow.ts b/packages/pl-fe/src/api/hooks/accounts/useFollow.ts index 7d10889b2..931487734 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useFollow.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useFollow.ts @@ -1,7 +1,9 @@ import { importEntities } from 'pl-fe/entity-store/actions'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useTransaction } from 'pl-fe/entity-store/hooks'; -import { useAppDispatch, useClient, useLoggedIn } from 'pl-fe/hooks'; +import { useTransaction } from 'pl-fe/entity-store/hooks/useTransaction'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; interface FollowOpts { reblogs?: boolean; diff --git a/packages/pl-fe/src/api/hooks/accounts/useRelationship.ts b/packages/pl-fe/src/api/hooks/accounts/useRelationship.ts index 5f3749014..1d009d87f 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useRelationship.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useRelationship.ts @@ -1,8 +1,8 @@ import * as v from 'valibot'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useEntity } from 'pl-fe/entity-store/hooks/useEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; import type { Relationship } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/accounts/useRelationships.ts b/packages/pl-fe/src/api/hooks/accounts/useRelationships.ts index c14ca9844..c0b44e5cb 100644 --- a/packages/pl-fe/src/api/hooks/accounts/useRelationships.ts +++ b/packages/pl-fe/src/api/hooks/accounts/useRelationships.ts @@ -1,6 +1,7 @@ import { Entities } from 'pl-fe/entity-store/entities'; import { useBatchedEntities } from 'pl-fe/entity-store/hooks/useBatchedEntities'; -import { useClient, useLoggedIn } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; import type { Relationship } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/admin/index.ts b/packages/pl-fe/src/api/hooks/admin/index.ts deleted file mode 100644 index 8b99c7224..000000000 --- a/packages/pl-fe/src/api/hooks/admin/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { useDomains } from './useDomains'; -export { useModerationLog } from './useModerationLog'; -export { useRelays } from './useRelays'; -export { useRules } from './useRules'; -export { useSuggest } from './useSuggest'; -export { useVerify } from './useVerify'; diff --git a/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts b/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts index 38da607ab..c20dc1ce9 100644 --- a/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts +++ b/packages/pl-fe/src/api/hooks/admin/useAnnouncements.ts @@ -7,11 +7,11 @@ import { } from 'pl-api'; import * as v from 'valibot'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeAnnouncement, AdminAnnouncement } from 'pl-fe/normalizers'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeAnnouncement, AdminAnnouncement } from 'pl-fe/normalizers/announcement'; import { queryClient } from 'pl-fe/queries/client'; -import { useAnnouncements as useUserAnnouncements } from '../announcements'; +import { useAnnouncements as useUserAnnouncements } from '../announcements/useAnnouncements'; const useAnnouncements = () => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/admin/useDomains.ts b/packages/pl-fe/src/api/hooks/admin/useDomains.ts index 1bacd06f4..4f11adb8b 100644 --- a/packages/pl-fe/src/api/hooks/admin/useDomains.ts +++ b/packages/pl-fe/src/api/hooks/admin/useDomains.ts @@ -1,6 +1,6 @@ import { useMutation, useQuery } from '@tanstack/react-query'; -import { useClient } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; import { queryClient } from 'pl-fe/queries/client'; import type { AdminDomain } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/admin/useModerationLog.ts b/packages/pl-fe/src/api/hooks/admin/useModerationLog.ts index 9b395216e..9ef56c684 100644 --- a/packages/pl-fe/src/api/hooks/admin/useModerationLog.ts +++ b/packages/pl-fe/src/api/hooks/admin/useModerationLog.ts @@ -1,7 +1,7 @@ import { useInfiniteQuery } from '@tanstack/react-query'; import { PaginatedResponse } from 'pl-api'; -import { useClient } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; import { flattenPages } from 'pl-fe/utils/queries'; import type { AdminModerationLogEntry } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/admin/useRelays.ts b/packages/pl-fe/src/api/hooks/admin/useRelays.ts index 08d57ac33..4ad7d9782 100644 --- a/packages/pl-fe/src/api/hooks/admin/useRelays.ts +++ b/packages/pl-fe/src/api/hooks/admin/useRelays.ts @@ -1,6 +1,6 @@ import { useMutation, useQuery } from '@tanstack/react-query'; -import { useClient } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; import { queryClient } from 'pl-fe/queries/client'; import type { AdminRelay } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/admin/useRules.ts b/packages/pl-fe/src/api/hooks/admin/useRules.ts index f7b2202df..2906cbda5 100644 --- a/packages/pl-fe/src/api/hooks/admin/useRules.ts +++ b/packages/pl-fe/src/api/hooks/admin/useRules.ts @@ -1,6 +1,6 @@ import { useMutation, useQuery } from '@tanstack/react-query'; -import { useClient } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; import { queryClient } from 'pl-fe/queries/client'; import type { AdminRule } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/admin/useSuggest.ts b/packages/pl-fe/src/api/hooks/admin/useSuggest.ts index fd9ab98bb..f392e9151 100644 --- a/packages/pl-fe/src/api/hooks/admin/useSuggest.ts +++ b/packages/pl-fe/src/api/hooks/admin/useSuggest.ts @@ -1,8 +1,8 @@ -import { useTransaction } from 'pl-fe/entity-store/hooks'; import { EntityCallbacks } from 'pl-fe/entity-store/hooks/types'; -import { useClient } from 'pl-fe/hooks'; +import { useTransaction } from 'pl-fe/entity-store/hooks/useTransaction'; +import { useClient } from 'pl-fe/hooks/useClient'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; const useSuggest = () => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/admin/useVerify.ts b/packages/pl-fe/src/api/hooks/admin/useVerify.ts index aab39f662..c3b4e956a 100644 --- a/packages/pl-fe/src/api/hooks/admin/useVerify.ts +++ b/packages/pl-fe/src/api/hooks/admin/useVerify.ts @@ -1,8 +1,8 @@ -import { useTransaction } from 'pl-fe/entity-store/hooks'; -import { EntityCallbacks } from 'pl-fe/entity-store/hooks/types'; -import { useClient } from 'pl-fe/hooks'; +import { useTransaction } from 'pl-fe/entity-store/hooks/useTransaction'; +import { useClient } from 'pl-fe/hooks/useClient'; -import type { Account } from 'pl-fe/normalizers'; +import type { EntityCallbacks } from 'pl-fe/entity-store/hooks/types'; +import type { Account } from 'pl-fe/normalizers/account'; const useVerify = () => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/announcements/index.ts b/packages/pl-fe/src/api/hooks/announcements/index.ts deleted file mode 100644 index 021ac3ea0..000000000 --- a/packages/pl-fe/src/api/hooks/announcements/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { useAnnouncements } from './useAnnouncements'; diff --git a/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts b/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts index 3c30f743b..d505fd38c 100644 --- a/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts +++ b/packages/pl-fe/src/api/hooks/announcements/useAnnouncements.ts @@ -2,8 +2,8 @@ import { useMutation, useQuery } from '@tanstack/react-query'; import { announcementReactionSchema, type AnnouncementReaction } from 'pl-api'; import * as v from 'valibot'; -import { useClient } from 'pl-fe/hooks'; -import { type Announcement, normalizeAnnouncement } from 'pl-fe/normalizers'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { type Announcement, normalizeAnnouncement } from 'pl-fe/normalizers/announcement'; import { queryClient } from 'pl-fe/queries/client'; const updateReaction = (reaction: AnnouncementReaction, count: number, me?: boolean, overwrite?: boolean) => v.parse(announcementReactionSchema, { diff --git a/packages/pl-fe/src/api/hooks/groups/useBlockGroupMember.ts b/packages/pl-fe/src/api/hooks/groups/useBlockGroupMember.ts index 7628b4079..7821a83da 100644 --- a/packages/pl-fe/src/api/hooks/groups/useBlockGroupMember.ts +++ b/packages/pl-fe/src/api/hooks/groups/useBlockGroupMember.ts @@ -1,9 +1,9 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; import type { Group } from 'pl-api'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; const useBlockGroupMember = (group: Pick, account: Pick) => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/groups/useCreateGroup.ts b/packages/pl-fe/src/api/hooks/groups/useCreateGroup.ts index f8f8c1222..34422ebb5 100644 --- a/packages/pl-fe/src/api/hooks/groups/useCreateGroup.ts +++ b/packages/pl-fe/src/api/hooks/groups/useCreateGroup.ts @@ -1,19 +1,9 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeGroup, type Group } from 'pl-fe/normalizers'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeGroup, type Group } from 'pl-fe/normalizers/group'; -import type { Group as BaseGroup } from 'pl-api'; - -interface CreateGroupParams { - display_name: string; - note?: string; - avatar?: File; - header?: File; - group_visibility?: 'members_only' | 'everyone'; - discoverable?: boolean; - tags?: string[]; -} +import type { Group as BaseGroup, CreateGroupParams } from 'pl-api'; const useCreateGroup = () => { const client = useClient(); @@ -30,4 +20,4 @@ const useCreateGroup = () => { }; }; -export { useCreateGroup, type CreateGroupParams }; +export { useCreateGroup }; diff --git a/packages/pl-fe/src/api/hooks/groups/useDeleteGroup.ts b/packages/pl-fe/src/api/hooks/groups/useDeleteGroup.ts index 61de6350f..560746c2d 100644 --- a/packages/pl-fe/src/api/hooks/groups/useDeleteGroup.ts +++ b/packages/pl-fe/src/api/hooks/groups/useDeleteGroup.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useDeleteEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useDeleteEntity } from 'pl-fe/entity-store/hooks/useDeleteEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; const useDeleteGroup = () => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/groups/useDeleteGroupStatus.ts b/packages/pl-fe/src/api/hooks/groups/useDeleteGroupStatus.ts index 7185a6d10..2481a6977 100644 --- a/packages/pl-fe/src/api/hooks/groups/useDeleteGroupStatus.ts +++ b/packages/pl-fe/src/api/hooks/groups/useDeleteGroupStatus.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useDeleteEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useDeleteEntity } from 'pl-fe/entity-store/hooks/useDeleteEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; import type { Group } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/groups/useDemoteGroupMember.ts b/packages/pl-fe/src/api/hooks/groups/useDemoteGroupMember.ts index 7d51d6238..5f8ee3e08 100644 --- a/packages/pl-fe/src/api/hooks/groups/useDemoteGroupMember.ts +++ b/packages/pl-fe/src/api/hooks/groups/useDemoteGroupMember.ts @@ -1,9 +1,9 @@ import * as v from 'valibot'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeGroupMember } from 'pl-fe/normalizers'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeGroupMember } from 'pl-fe/normalizers/group-member'; import type { Group, GroupMember as GroupMember, GroupRole } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/groups/useGroup.ts b/packages/pl-fe/src/api/hooks/groups/useGroup.ts index b93b504dd..3e872acde 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroup.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroup.ts @@ -2,9 +2,9 @@ import { useEffect } from 'react'; import { useHistory } from 'react-router-dom'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeGroup, type Group } from 'pl-fe/normalizers'; +import { useEntity } from 'pl-fe/entity-store/hooks/useEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeGroup, type Group } from 'pl-fe/normalizers/group'; import { useGroupRelationship } from './useGroupRelationship'; diff --git a/packages/pl-fe/src/api/hooks/groups/useGroupMedia.ts b/packages/pl-fe/src/api/hooks/groups/useGroupMedia.ts index 273476510..9f2b099c4 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroupMedia.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroupMedia.ts @@ -1,7 +1,7 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntities } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeStatus } from 'pl-fe/normalizers'; +import { useEntities } from 'pl-fe/entity-store/hooks/useEntities'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeStatus } from 'pl-fe/normalizers/status'; const useGroupMedia = (groupId: string) => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/groups/useGroupMembers.ts b/packages/pl-fe/src/api/hooks/groups/useGroupMembers.ts index 99cd25790..9a2978831 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroupMembers.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroupMembers.ts @@ -1,7 +1,7 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntities } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeGroupMember, type GroupMember } from 'pl-fe/normalizers'; +import { useEntities } from 'pl-fe/entity-store/hooks/useEntities'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeGroupMember, type GroupMember } from 'pl-fe/normalizers/group-member'; import type { GroupMember as BaseGroupMember, GroupRoles } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/groups/useGroupMembershipRequests.ts b/packages/pl-fe/src/api/hooks/groups/useGroupMembershipRequests.ts index 38e631cd7..ead857e73 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroupMembershipRequests.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroupMembershipRequests.ts @@ -1,9 +1,10 @@ import { GroupRoles } from 'pl-api'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useDismissEntity, useEntities } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeAccount } from 'pl-fe/normalizers'; +import { useDismissEntity } from 'pl-fe/entity-store/hooks/useDismissEntity'; +import { useEntities } from 'pl-fe/entity-store/hooks/useEntities'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeAccount } from 'pl-fe/normalizers/account'; import { useGroupRelationship } from './useGroupRelationship'; diff --git a/packages/pl-fe/src/api/hooks/groups/useGroupRelationship.ts b/packages/pl-fe/src/api/hooks/groups/useGroupRelationship.ts index 9f77f5af4..196fe73f4 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroupRelationship.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroupRelationship.ts @@ -1,8 +1,8 @@ import * as v from 'valibot'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useEntity } from 'pl-fe/entity-store/hooks/useEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; import type { GroupRelationship } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/groups/useGroupRelationships.ts b/packages/pl-fe/src/api/hooks/groups/useGroupRelationships.ts index 128b067a0..6aff57056 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroupRelationships.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroupRelationships.ts @@ -1,6 +1,7 @@ import { Entities } from 'pl-fe/entity-store/entities'; import { useBatchedEntities } from 'pl-fe/entity-store/hooks/useBatchedEntities'; -import { useClient, useLoggedIn } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; import type { GroupRelationship } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/groups/useGroups.ts b/packages/pl-fe/src/api/hooks/groups/useGroups.ts index ecfe71090..be212bdfe 100644 --- a/packages/pl-fe/src/api/hooks/groups/useGroups.ts +++ b/packages/pl-fe/src/api/hooks/groups/useGroups.ts @@ -1,8 +1,8 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntities } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useEntities } from 'pl-fe/entity-store/hooks/useEntities'; +import { useClient } from 'pl-fe/hooks/useClient'; import { useFeatures } from 'pl-fe/hooks/useFeatures'; -import { normalizeGroup, type Group } from 'pl-fe/normalizers'; +import { normalizeGroup, type Group } from 'pl-fe/normalizers/group'; import { useGroupRelationships } from './useGroupRelationships'; diff --git a/packages/pl-fe/src/api/hooks/groups/useJoinGroup.ts b/packages/pl-fe/src/api/hooks/groups/useJoinGroup.ts index 3378515b4..abe50d8ad 100644 --- a/packages/pl-fe/src/api/hooks/groups/useJoinGroup.ts +++ b/packages/pl-fe/src/api/hooks/groups/useJoinGroup.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; import { useGroups } from './useGroups'; diff --git a/packages/pl-fe/src/api/hooks/groups/useLeaveGroup.ts b/packages/pl-fe/src/api/hooks/groups/useLeaveGroup.ts index 12afead8d..ac8aba380 100644 --- a/packages/pl-fe/src/api/hooks/groups/useLeaveGroup.ts +++ b/packages/pl-fe/src/api/hooks/groups/useLeaveGroup.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; import { useGroups } from './useGroups'; diff --git a/packages/pl-fe/src/api/hooks/groups/usePromoteGroupMember.ts b/packages/pl-fe/src/api/hooks/groups/usePromoteGroupMember.ts index 5824e3a46..d961d7caa 100644 --- a/packages/pl-fe/src/api/hooks/groups/usePromoteGroupMember.ts +++ b/packages/pl-fe/src/api/hooks/groups/usePromoteGroupMember.ts @@ -1,9 +1,9 @@ import * as v from 'valibot'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeGroupMember } from 'pl-fe/normalizers'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeGroupMember } from 'pl-fe/normalizers/group-member'; import type { Group, GroupMember, GroupRole } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/groups/useUpdateGroup.ts b/packages/pl-fe/src/api/hooks/groups/useUpdateGroup.ts index c43f2e9cc..efe91ed34 100644 --- a/packages/pl-fe/src/api/hooks/groups/useUpdateGroup.ts +++ b/packages/pl-fe/src/api/hooks/groups/useUpdateGroup.ts @@ -1,7 +1,7 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; -import { normalizeGroup } from 'pl-fe/normalizers'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { normalizeGroup } from 'pl-fe/normalizers/group'; interface UpdateGroupParams { display_name?: string; diff --git a/packages/pl-fe/src/api/hooks/index.ts b/packages/pl-fe/src/api/hooks/index.ts deleted file mode 100644 index 280f262cd..000000000 --- a/packages/pl-fe/src/api/hooks/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -// Accounts -export { useAccount } from './accounts/useAccount'; -export { useAccountLookup } from './accounts/useAccountLookup'; -export { useAccountScrobble } from './accounts/useAccountScrobble'; -export { - useBlocks, - useMutes, - useFollowers, - useFollowing, -} from './accounts/useAccountList'; -export { useFollow } from './accounts/useFollow'; -export { useRelationships } from './accounts/useRelationships'; - -// Groups -export { useBlockGroupMember } from './groups/useBlockGroupMember'; -export { useCreateGroup, type CreateGroupParams } from './groups/useCreateGroup'; -export { useDeleteGroup } from './groups/useDeleteGroup'; -export { useDemoteGroupMember } from './groups/useDemoteGroupMember'; -export { useGroup } from './groups/useGroup'; -export { useGroupMedia } from './groups/useGroupMedia'; -export { useGroupMembers } from './groups/useGroupMembers'; -export { useGroupMembershipRequests } from './groups/useGroupMembershipRequests'; -export { useGroupRelationship } from './groups/useGroupRelationship'; -export { useGroupRelationships } from './groups/useGroupRelationships'; -export { useGroups } from './groups/useGroups'; -export { useJoinGroup } from './groups/useJoinGroup'; -export { useLeaveGroup } from './groups/useLeaveGroup'; -export { usePromoteGroupMember } from './groups/usePromoteGroupMember'; -export { useUpdateGroup } from './groups/useUpdateGroup'; - -// Instance -export { useTranslationLanguages } from './instance/useTranslationLanguages'; - -// Settings -export { useInteractionPolicies } from './settings/useInteractionPolicies'; - -// Statuses -export { useBookmarkFolders } from './statuses/useBookmarkFolders'; -export { useBookmarkFolder } from './statuses/useBookmarkFolder'; -export { useCreateBookmarkFolder } from './statuses/useCreateBookmarkFolder'; -export { useDeleteBookmarkFolder } from './statuses/useDeleteBookmarkFolder'; -export { useUpdateBookmarkFolder } from './statuses/useUpdateBookmarkFolder'; - -// Streaming -export { useUserStream } from './streaming/useUserStream'; -export { useCommunityStream } from './streaming/useCommunityStream'; -export { usePublicStream } from './streaming/usePublicStream'; -export { useDirectStream } from './streaming/useDirectStream'; -export { useHashtagStream } from './streaming/useHashtagStream'; -export { useListStream } from './streaming/useListStream'; -export { useGroupStream } from './streaming/useGroupStream'; -export { useRemoteStream } from './streaming/useRemoteStream'; - -// Trends -export { useTrendingLinks } from './trends/useTrendingLinks'; diff --git a/packages/pl-fe/src/api/hooks/instance/useTranslationLanguages.ts b/packages/pl-fe/src/api/hooks/instance/useTranslationLanguages.ts index 50e97522b..471c20595 100644 --- a/packages/pl-fe/src/api/hooks/instance/useTranslationLanguages.ts +++ b/packages/pl-fe/src/api/hooks/instance/useTranslationLanguages.ts @@ -1,6 +1,9 @@ import { useQuery } from '@tanstack/react-query'; -import { useClient, useFeatures, useInstance, useLoggedIn } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; const useTranslationLanguages = () => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/settings/useInteractionPolicies.ts b/packages/pl-fe/src/api/hooks/settings/useInteractionPolicies.ts index aa09e5f5d..e01792253 100644 --- a/packages/pl-fe/src/api/hooks/settings/useInteractionPolicies.ts +++ b/packages/pl-fe/src/api/hooks/settings/useInteractionPolicies.ts @@ -2,7 +2,9 @@ import { useMutation, useQuery } from '@tanstack/react-query'; import { type InteractionPolicies, interactionPoliciesSchema } from 'pl-api'; import * as v from 'valibot'; -import { useClient, useFeatures, useLoggedIn } from 'pl-fe/hooks'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; import { queryClient } from 'pl-fe/queries/client'; const emptySchema = v.parse(interactionPoliciesSchema, {}); diff --git a/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolder.ts b/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolder.ts index a0d6d363f..33b0122fd 100644 --- a/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolder.ts +++ b/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolder.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; import { selectEntity } from 'pl-fe/entity-store/selectors'; -import { useAppSelector } from 'pl-fe/hooks'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; import { useBookmarkFolders } from './useBookmarkFolders'; diff --git a/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolders.ts b/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolders.ts index a13815f8d..11bdf3495 100644 --- a/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolders.ts +++ b/packages/pl-fe/src/api/hooks/statuses/useBookmarkFolders.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntities } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useEntities } from 'pl-fe/entity-store/hooks/useEntities'; +import { useClient } from 'pl-fe/hooks/useClient'; import { useFeatures } from 'pl-fe/hooks/useFeatures'; import type { BookmarkFolder } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/statuses/useCreateBookmarkFolder.ts b/packages/pl-fe/src/api/hooks/statuses/useCreateBookmarkFolder.ts index ce174d375..0944609f1 100644 --- a/packages/pl-fe/src/api/hooks/statuses/useCreateBookmarkFolder.ts +++ b/packages/pl-fe/src/api/hooks/statuses/useCreateBookmarkFolder.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; interface CreateBookmarkFolderParams { name: string; diff --git a/packages/pl-fe/src/api/hooks/statuses/useDeleteBookmarkFolder.ts b/packages/pl-fe/src/api/hooks/statuses/useDeleteBookmarkFolder.ts index 2aae3d3ae..4df699db0 100644 --- a/packages/pl-fe/src/api/hooks/statuses/useDeleteBookmarkFolder.ts +++ b/packages/pl-fe/src/api/hooks/statuses/useDeleteBookmarkFolder.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useDeleteEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useDeleteEntity } from 'pl-fe/entity-store/hooks/useDeleteEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; const useDeleteBookmarkFolder = () => { const client = useClient(); diff --git a/packages/pl-fe/src/api/hooks/statuses/useUpdateBookmarkFolder.ts b/packages/pl-fe/src/api/hooks/statuses/useUpdateBookmarkFolder.ts index d45b22f50..955690f8e 100644 --- a/packages/pl-fe/src/api/hooks/statuses/useUpdateBookmarkFolder.ts +++ b/packages/pl-fe/src/api/hooks/statuses/useUpdateBookmarkFolder.ts @@ -1,6 +1,6 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useCreateEntity } from 'pl-fe/entity-store/hooks'; -import { useClient } from 'pl-fe/hooks'; +import { useCreateEntity } from 'pl-fe/entity-store/hooks/useCreateEntity'; +import { useClient } from 'pl-fe/hooks/useClient'; interface UpdateBookmarkFolderParams { name: string; diff --git a/packages/pl-fe/src/api/hooks/streaming/useListStream.ts b/packages/pl-fe/src/api/hooks/streaming/useListStream.ts index 9c027db03..95bb114f8 100644 --- a/packages/pl-fe/src/api/hooks/streaming/useListStream.ts +++ b/packages/pl-fe/src/api/hooks/streaming/useListStream.ts @@ -1,4 +1,4 @@ -import { useLoggedIn } from 'pl-fe/hooks'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; import { useTimelineStream } from './useTimelineStream'; diff --git a/packages/pl-fe/src/api/hooks/streaming/useTimelineStream.ts b/packages/pl-fe/src/api/hooks/streaming/useTimelineStream.ts index 97924198b..ce94aca46 100644 --- a/packages/pl-fe/src/api/hooks/streaming/useTimelineStream.ts +++ b/packages/pl-fe/src/api/hooks/streaming/useTimelineStream.ts @@ -1,6 +1,8 @@ import { useEffect, useRef } from 'react'; -import { useAppSelector, useClient, useInstance } from 'pl-fe/hooks'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useInstance } from 'pl-fe/hooks/useInstance'; import { getAccessToken } from 'pl-fe/utils/auth'; import type { StreamingEvent } from 'pl-api'; diff --git a/packages/pl-fe/src/api/hooks/streaming/useUserStream.ts b/packages/pl-fe/src/api/hooks/streaming/useUserStream.ts index 0b1ec3358..0f9d0602b 100644 --- a/packages/pl-fe/src/api/hooks/streaming/useUserStream.ts +++ b/packages/pl-fe/src/api/hooks/streaming/useUserStream.ts @@ -10,10 +10,11 @@ import { useStatContext } from 'pl-fe/contexts/stat-context'; import { importEntities } from 'pl-fe/entity-store/actions'; import { Entities } from 'pl-fe/entity-store/entities'; import { selectEntity } from 'pl-fe/entity-store/selectors'; -import { useAppDispatch, useLoggedIn } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; import messages from 'pl-fe/messages'; import { queryClient } from 'pl-fe/queries/client'; -import { useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; import { getUnreadChatsCount, updateChatListItem } from 'pl-fe/utils/chats'; import { play, soundCache } from 'pl-fe/utils/sounds'; diff --git a/packages/pl-fe/src/api/hooks/trends/useTrendingLinks.ts b/packages/pl-fe/src/api/hooks/trends/useTrendingLinks.ts index 2c3dde949..9eaa55af1 100644 --- a/packages/pl-fe/src/api/hooks/trends/useTrendingLinks.ts +++ b/packages/pl-fe/src/api/hooks/trends/useTrendingLinks.ts @@ -1,6 +1,7 @@ import { Entities } from 'pl-fe/entity-store/entities'; -import { useEntities } from 'pl-fe/entity-store/hooks'; -import { useClient, useFeatures } from 'pl-fe/hooks'; +import { useEntities } from 'pl-fe/entity-store/hooks/useEntities'; +import { useClient } from 'pl-fe/hooks/useClient'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; import type { TrendsLink } from 'pl-api'; diff --git a/packages/pl-fe/src/components/account-hover-card.tsx b/packages/pl-fe/src/components/account-hover-card.tsx index 0111fd32b..01b6a22d3 100644 --- a/packages/pl-fe/src/components/account-hover-card.tsx +++ b/packages/pl-fe/src/components/account-hover-card.tsx @@ -5,20 +5,25 @@ import { useIntl, FormattedMessage } from 'react-intl'; import { useHistory } from 'react-router-dom'; import { fetchRelationships } from 'pl-fe/actions/accounts'; -import { useAccount } from 'pl-fe/api/hooks'; +import { useAccount } from 'pl-fe/api/hooks/accounts/useAccount'; import Badge from 'pl-fe/components/badge'; +import Card, { CardBody } from 'pl-fe/components/ui/card'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import ActionButton from 'pl-fe/features/ui/components/action-button'; import { UserPanel } from 'pl-fe/features/ui/util/async-components'; -import { useAppSelector, useAppDispatch } from 'pl-fe/hooks'; -import { useAccountHoverCardStore } from 'pl-fe/stores'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useAccountHoverCardStore } from 'pl-fe/stores/account-hover-card'; import { showAccountHoverCard } from './hover-account-wrapper'; import { ParsedContent } from './parsed-content'; import { dateFormatOptions } from './relative-timestamp'; import Scrobble from './scrobble'; -import { Card, CardBody, HStack, Icon, Stack, Text } from './ui'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; const getBadges = ( account?: Pick, diff --git a/packages/pl-fe/src/components/account-search.tsx b/packages/pl-fe/src/components/account-search.tsx index 1571dcc1d..8e0509045 100644 --- a/packages/pl-fe/src/components/account-search.tsx +++ b/packages/pl-fe/src/components/account-search.tsx @@ -4,7 +4,7 @@ import { defineMessages, useIntl } from 'react-intl'; import AutosuggestAccountInput from 'pl-fe/components/autosuggest-account-input'; -import SvgIcon from './ui/icon/svg-icon'; +import SvgIcon from './ui/svg-icon'; const messages = defineMessages({ placeholder: { id: 'account_search.placeholder', defaultMessage: 'Search for an account' }, diff --git a/packages/pl-fe/src/components/account.tsx b/packages/pl-fe/src/components/account.tsx index 70ecec5d5..fcb716158 100644 --- a/packages/pl-fe/src/components/account.tsx +++ b/packages/pl-fe/src/components/account.tsx @@ -3,18 +3,24 @@ import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; import { Link, useHistory } from 'react-router-dom'; import HoverAccountWrapper from 'pl-fe/components/hover-account-wrapper'; +import Avatar from 'pl-fe/components/ui/avatar'; +import Emoji from 'pl-fe/components/ui/emoji'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import IconButton from 'pl-fe/components/ui/icon-button'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import VerificationBadge from 'pl-fe/components/verification-badge'; import ActionButton from 'pl-fe/features/ui/components/action-button'; -import { useAppSelector } from 'pl-fe/hooks'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; import { getAcct } from 'pl-fe/utils/accounts'; import { displayFqn } from 'pl-fe/utils/state'; import Badge from './badge'; import { ParsedContent } from './parsed-content'; import RelativeTimestamp from './relative-timestamp'; -import { Avatar, Emoji, HStack, Icon, IconButton, Stack, Text } from './ui'; -import type { Account as AccountSchema } from 'pl-fe/normalizers'; +import type { Account as AccountSchema } from 'pl-fe/normalizers/account'; import type { StatusApprovalStatus } from 'pl-fe/normalizers/status'; interface IInstanceFavicon { diff --git a/packages/pl-fe/src/components/alt-indicator.tsx b/packages/pl-fe/src/components/alt-indicator.tsx index a4fc88a87..ad1c8642d 100644 --- a/packages/pl-fe/src/components/alt-indicator.tsx +++ b/packages/pl-fe/src/components/alt-indicator.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import React from 'react'; import { FormattedMessage } from 'react-intl'; -import { Icon } from './ui'; +import Icon from 'pl-fe/components/ui/icon'; interface IAltIndicator extends Pick, 'title' | 'className'> { warning?: boolean; diff --git a/packages/pl-fe/src/components/animated-number.tsx b/packages/pl-fe/src/components/animated-number.tsx index fe7974f45..f359940a4 100644 --- a/packages/pl-fe/src/components/animated-number.tsx +++ b/packages/pl-fe/src/components/animated-number.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; import { useIntl, type IntlShape } from 'react-intl'; import { TransitionMotion, spring } from 'react-motion'; -import { useSettings } from 'pl-fe/hooks'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import { isNumber, roundDown } from 'pl-fe/utils/numbers'; const obfuscatedCount = (count: number): string => { diff --git a/packages/pl-fe/src/components/announcements/announcement-content.tsx b/packages/pl-fe/src/components/announcements/announcement-content.tsx index 13c071beb..d9bfb3408 100644 --- a/packages/pl-fe/src/components/announcements/announcement-content.tsx +++ b/packages/pl-fe/src/components/announcements/announcement-content.tsx @@ -4,7 +4,7 @@ import { useHistory } from 'react-router-dom'; import { getTextDirection } from 'pl-fe/utils/rtl'; import type { Mention as MentionEntity } from 'pl-api'; -import type { Announcement } from 'pl-fe/normalizers'; +import type { Announcement } from 'pl-fe/normalizers/announcement'; interface IAnnouncementContent { announcement: Announcement; diff --git a/packages/pl-fe/src/components/announcements/announcement.tsx b/packages/pl-fe/src/components/announcements/announcement.tsx index b61610783..d83d01feb 100644 --- a/packages/pl-fe/src/components/announcements/announcement.tsx +++ b/packages/pl-fe/src/components/announcements/announcement.tsx @@ -1,8 +1,9 @@ import React from 'react'; import { FormattedDate } from 'react-intl'; -import { Stack, Text } from 'pl-fe/components/ui'; -import { useFeatures } from 'pl-fe/hooks'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; import { getTextDirection } from 'pl-fe/utils/rtl'; import AnnouncementContent from './announcement-content'; @@ -10,7 +11,7 @@ import ReactionsBar from './reactions-bar'; import type { Map as ImmutableMap } from 'immutable'; import type { CustomEmoji } from 'pl-api'; -import type { Announcement as AnnouncementEntity } from 'pl-fe/normalizers'; +import type { Announcement as AnnouncementEntity } from 'pl-fe/normalizers/announcement'; interface IAnnouncement { announcement: AnnouncementEntity; diff --git a/packages/pl-fe/src/components/announcements/announcements-panel.tsx b/packages/pl-fe/src/components/announcements/announcements-panel.tsx index 83383941c..c01e0433d 100644 --- a/packages/pl-fe/src/components/announcements/announcements-panel.tsx +++ b/packages/pl-fe/src/components/announcements/announcements-panel.tsx @@ -5,9 +5,11 @@ import { FormattedMessage } from 'react-intl'; import ReactSwipeableViews from 'react-swipeable-views'; import { createSelector } from 'reselect'; -import { useAnnouncements } from 'pl-fe/api/hooks/announcements'; -import { Card, HStack, Widget } from 'pl-fe/components/ui'; -import { useAppSelector } from 'pl-fe/hooks'; +import { useAnnouncements } from 'pl-fe/api/hooks/announcements/useAnnouncements'; +import Card from 'pl-fe/components/ui/card'; +import HStack from 'pl-fe/components/ui/hstack'; +import Widget from 'pl-fe/components/ui/widget'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; import Announcement from './announcement'; diff --git a/packages/pl-fe/src/components/announcements/emoji.tsx b/packages/pl-fe/src/components/announcements/emoji.tsx index 15d204e03..44b918cf5 100644 --- a/packages/pl-fe/src/components/announcements/emoji.tsx +++ b/packages/pl-fe/src/components/announcements/emoji.tsx @@ -1,7 +1,7 @@ import React from 'react'; import unicodeMapping from 'pl-fe/features/emoji/mapping'; -import { useSettings } from 'pl-fe/hooks'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import { joinPublicPath } from 'pl-fe/utils/static'; import type { Map as ImmutableMap } from 'immutable'; diff --git a/packages/pl-fe/src/components/announcements/reaction.tsx b/packages/pl-fe/src/components/announcements/reaction.tsx index 7160d8b96..0664e7131 100644 --- a/packages/pl-fe/src/components/announcements/reaction.tsx +++ b/packages/pl-fe/src/components/announcements/reaction.tsx @@ -1,7 +1,7 @@ import clsx from 'clsx'; import React, { useState } from 'react'; -import { useAnnouncements } from 'pl-fe/api/hooks/announcements'; +import { useAnnouncements } from 'pl-fe/api/hooks/announcements/useAnnouncements'; import AnimatedNumber from 'pl-fe/components/animated-number'; import unicodeMapping from 'pl-fe/features/emoji/mapping'; diff --git a/packages/pl-fe/src/components/announcements/reactions-bar.tsx b/packages/pl-fe/src/components/announcements/reactions-bar.tsx index 5aee082ca..cbb8f079b 100644 --- a/packages/pl-fe/src/components/announcements/reactions-bar.tsx +++ b/packages/pl-fe/src/components/announcements/reactions-bar.tsx @@ -2,9 +2,9 @@ import clsx from 'clsx'; import React from 'react'; import { TransitionMotion, spring } from 'react-motion'; -import { useAnnouncements } from 'pl-fe/api/hooks/announcements'; +import { useAnnouncements } from 'pl-fe/api/hooks/announcements/useAnnouncements'; import EmojiPickerDropdown from 'pl-fe/features/emoji/containers/emoji-picker-dropdown-container'; -import { useSettings } from 'pl-fe/hooks'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import Reaction from './reaction'; diff --git a/packages/pl-fe/src/components/attachment-thumbs.tsx b/packages/pl-fe/src/components/attachment-thumbs.tsx index a78ef82a4..7ce15ca65 100644 --- a/packages/pl-fe/src/components/attachment-thumbs.tsx +++ b/packages/pl-fe/src/components/attachment-thumbs.tsx @@ -1,13 +1,13 @@ import React, { Suspense } from 'react'; import { MediaGallery } from 'pl-fe/features/ui/util/async-components'; -import { useSettings } from 'pl-fe/hooks'; -import { useModalsStore } from 'pl-fe/stores'; +import { useSettings } from 'pl-fe/hooks/useSettings'; +import { useModalsStore } from 'pl-fe/stores/modals'; import { isMediaVisible } from './statuses/sensitive-content-overlay'; import type { MediaAttachment } from 'pl-api'; -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; interface IAttachmentThumbs { status: Pick; diff --git a/packages/pl-fe/src/components/authorize-reject-buttons.tsx b/packages/pl-fe/src/components/authorize-reject-buttons.tsx index 34a268669..695951400 100644 --- a/packages/pl-fe/src/components/authorize-reject-buttons.tsx +++ b/packages/pl-fe/src/components/authorize-reject-buttons.tsx @@ -2,7 +2,9 @@ import clsx from 'clsx'; import React, { useEffect, useRef, useState } from 'react'; import { FormattedMessage } from 'react-intl'; -import { HStack, IconButton, Text } from 'pl-fe/components/ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import IconButton from 'pl-fe/components/ui/icon-button'; +import Text from 'pl-fe/components/ui/text'; interface IAuthorizeRejectButtons { onAuthorize(): Promise | unknown; diff --git a/packages/pl-fe/src/components/autosuggest-account-input.tsx b/packages/pl-fe/src/components/autosuggest-account-input.tsx index 02131d60b..b45f0f83f 100644 --- a/packages/pl-fe/src/components/autosuggest-account-input.tsx +++ b/packages/pl-fe/src/components/autosuggest-account-input.tsx @@ -3,10 +3,10 @@ import React, { useState, useRef, useCallback, useEffect } from 'react'; import { accountSearch } from 'pl-fe/actions/accounts'; import AutosuggestInput, { AutoSuggestion } from 'pl-fe/components/autosuggest-input'; -import { useAppDispatch } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; import type { Menu } from 'pl-fe/components/dropdown-menu'; -import type { InputThemes } from 'pl-fe/components/ui/input/input'; +import type { InputThemes } from 'pl-fe/components/ui/input'; const noOp = () => { }; diff --git a/packages/pl-fe/src/components/autosuggest-input.tsx b/packages/pl-fe/src/components/autosuggest-input.tsx index 2ab6d407f..c41045a8a 100644 --- a/packages/pl-fe/src/components/autosuggest-input.tsx +++ b/packages/pl-fe/src/components/autosuggest-input.tsx @@ -4,12 +4,13 @@ import React, { PureComponent } from 'react'; import AutosuggestEmoji from 'pl-fe/components/autosuggest-emoji'; import Icon from 'pl-fe/components/icon'; -import { Input, Portal } from 'pl-fe/components/ui'; +import Input from 'pl-fe/components/ui/input'; +import Portal from 'pl-fe/components/ui/portal'; import AutosuggestAccount from 'pl-fe/features/compose/components/autosuggest-account'; import { textAtCursorMatchesToken } from 'pl-fe/utils/suggestions'; import type { Menu, MenuItem } from 'pl-fe/components/dropdown-menu'; -import type { InputThemes } from 'pl-fe/components/ui/input/input'; +import type { InputThemes } from 'pl-fe/components/ui/input'; import type { Emoji } from 'pl-fe/features/emoji'; type AutoSuggestion = string | Emoji; diff --git a/packages/pl-fe/src/components/autosuggest-location.tsx b/packages/pl-fe/src/components/autosuggest-location.tsx index 0d384eaa2..06dba47d3 100644 --- a/packages/pl-fe/src/components/autosuggest-location.tsx +++ b/packages/pl-fe/src/components/autosuggest-location.tsx @@ -1,8 +1,10 @@ import React from 'react'; -import { useAppSelector } from 'pl-fe/hooks'; - -import { HStack, Icon, Stack, Text } from './ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; const buildingCommunityIcon = require('@tabler/icons/outline/building-community.svg'); const homeIcon = require('@tabler/icons/outline/home-2.svg'); diff --git a/packages/pl-fe/src/components/avatar-stack.tsx b/packages/pl-fe/src/components/avatar-stack.tsx index 7776fe6ff..9f367d201 100644 --- a/packages/pl-fe/src/components/avatar-stack.tsx +++ b/packages/pl-fe/src/components/avatar-stack.tsx @@ -2,11 +2,12 @@ import clsx from 'clsx'; import { List as ImmutableList, OrderedSet as ImmutableOrderedSet } from 'immutable'; import React from 'react'; -import { Avatar, HStack } from 'pl-fe/components/ui'; -import { useAppSelector } from 'pl-fe/hooks'; +import Avatar from 'pl-fe/components/ui/avatar'; +import HStack from 'pl-fe/components/ui/hstack'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; import { makeGetAccount } from 'pl-fe/selectors'; -import type { Account } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; const getAccount = makeGetAccount(); diff --git a/packages/pl-fe/src/components/big-card.tsx b/packages/pl-fe/src/components/big-card.tsx index 059660719..1efd4ca7f 100644 --- a/packages/pl-fe/src/components/big-card.tsx +++ b/packages/pl-fe/src/components/big-card.tsx @@ -1,6 +1,8 @@ import React from 'react'; -import { Card, CardBody, Stack, Text } from 'pl-fe/components/ui'; +import Card, { CardBody } from 'pl-fe/components/ui/card'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; interface IBigCard { title: React.ReactNode; diff --git a/packages/pl-fe/src/components/birthday-input.tsx b/packages/pl-fe/src/components/birthday-input.tsx index 0fcb8fdf6..0ddae1780 100644 --- a/packages/pl-fe/src/components/birthday-input.tsx +++ b/packages/pl-fe/src/components/birthday-input.tsx @@ -3,7 +3,8 @@ import { defineMessages, useIntl } from 'react-intl'; import IconButton from 'pl-fe/components/icon-button'; import { DatePicker } from 'pl-fe/features/ui/util/async-components'; -import { useInstance, useFeatures } from 'pl-fe/hooks'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useInstance } from 'pl-fe/hooks/useInstance'; const messages = defineMessages({ birthdayPlaceholder: { id: 'edit_profile.fields.birthday_placeholder', defaultMessage: 'Your birthday' }, diff --git a/packages/pl-fe/src/components/birthday-panel.tsx b/packages/pl-fe/src/components/birthday-panel.tsx index 6a486a317..c3ef42c05 100644 --- a/packages/pl-fe/src/components/birthday-panel.tsx +++ b/packages/pl-fe/src/components/birthday-panel.tsx @@ -3,9 +3,10 @@ import React, { useRef } from 'react'; import { FormattedMessage } from 'react-intl'; import { fetchBirthdayReminders } from 'pl-fe/actions/accounts'; -import { Widget } from 'pl-fe/components/ui'; +import Widget from 'pl-fe/components/ui/widget'; import AccountContainer from 'pl-fe/containers/account-container'; -import { useAppDispatch, useAppSelector } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; const timeToMidnight = () => { const now = new Date(); diff --git a/packages/pl-fe/src/components/copyable-input.tsx b/packages/pl-fe/src/components/copyable-input.tsx index dfa8af73d..f903d646e 100644 --- a/packages/pl-fe/src/components/copyable-input.tsx +++ b/packages/pl-fe/src/components/copyable-input.tsx @@ -1,7 +1,9 @@ import React, { useRef } from 'react'; import { FormattedMessage } from 'react-intl'; -import { Button, HStack, Input } from './ui'; +import Button from 'pl-fe/components/ui/button'; +import HStack from 'pl-fe/components/ui/hstack'; +import Input from 'pl-fe/components/ui/input'; interface ICopyableInput { /** Text to be copied. */ diff --git a/packages/pl-fe/src/components/domain.tsx b/packages/pl-fe/src/components/domain.tsx index 264c1df13..8af041f16 100644 --- a/packages/pl-fe/src/components/domain.tsx +++ b/packages/pl-fe/src/components/domain.tsx @@ -2,9 +2,10 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { unblockDomain } from 'pl-fe/actions/domain-blocks'; -import { useAppDispatch } from 'pl-fe/hooks'; - -import { HStack, IconButton, Text } from './ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import IconButton from 'pl-fe/components/ui/icon-button'; +import Text from 'pl-fe/components/ui/text'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; const messages = defineMessages({ blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' }, diff --git a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx index b203c2348..8e0390a8d 100644 --- a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx +++ b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu-item.tsx @@ -2,10 +2,11 @@ import clsx from 'clsx'; import React, { useEffect, useRef } from 'react'; import { useHistory } from 'react-router-dom'; +import Counter from 'pl-fe/components/ui/counter'; +import Icon from 'pl-fe/components/ui/icon'; +import Toggle from 'pl-fe/components/ui/toggle'; import { userTouching } from 'pl-fe/is-mobile'; -import { Counter, Icon, Toggle } from '../ui'; - interface MenuItem { action?: React.EventHandler; active?: boolean; diff --git a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx index 0bf48a5f1..e34a73a0d 100644 --- a/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx +++ b/packages/pl-fe/src/components/dropdown-menu/dropdown-menu.tsx @@ -4,10 +4,12 @@ import { supportsPassiveEvents } from 'detect-passive-events'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import ReactSwipeableViews from 'react-swipeable-views'; +import HStack from 'pl-fe/components/ui/hstack'; +import IconButton from 'pl-fe/components/ui/icon-button'; +import Portal from 'pl-fe/components/ui/portal'; import { userTouching } from 'pl-fe/is-mobile'; -import { useUiStore, useModalsStore } from 'pl-fe/stores'; - -import { HStack, IconButton, Portal } from '../ui'; +import { useModalsStore } from 'pl-fe/stores/modals'; +import { useUiStore } from 'pl-fe/stores/ui'; import DropdownMenuItem, { MenuItem } from './dropdown-menu-item'; diff --git a/packages/pl-fe/src/components/event-preview.tsx b/packages/pl-fe/src/components/event-preview.tsx index 575facdcc..115d08512 100644 --- a/packages/pl-fe/src/components/event-preview.tsx +++ b/packages/pl-fe/src/components/event-preview.tsx @@ -2,15 +2,17 @@ import clsx from 'clsx'; import React from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; +import Icon from 'pl-fe/components/icon'; +import Button from 'pl-fe/components/ui/button'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import VerificationBadge from 'pl-fe/components/verification-badge'; import EventActionButton from 'pl-fe/features/event/components/event-action-button'; import EventDate from 'pl-fe/features/event/components/event-date'; -import { useAppSelector } from 'pl-fe/hooks'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; -import Icon from './icon'; -import { Button, HStack, Stack, Text } from './ui'; -import VerificationBadge from './verification-badge'; - -import type { Status as StatusEntity } from 'pl-fe/normalizers'; +import type { Status as StatusEntity } from 'pl-fe/normalizers/status'; const messages = defineMessages({ eventBanner: { id: 'event.banner', defaultMessage: 'Event banner' }, diff --git a/packages/pl-fe/src/components/gdpr-banner.tsx b/packages/pl-fe/src/components/gdpr-banner.tsx index 676970483..3dec3dbf5 100644 --- a/packages/pl-fe/src/components/gdpr-banner.tsx +++ b/packages/pl-fe/src/components/gdpr-banner.tsx @@ -2,8 +2,13 @@ import clsx from 'clsx'; import React, { useState } from 'react'; import { FormattedMessage } from 'react-intl'; -import { Banner, Button, HStack, Stack, Text } from 'pl-fe/components/ui'; -import { useInstance, usePlFeConfig } from 'pl-fe/hooks'; +import Banner from 'pl-fe/components/ui/banner'; +import Button from 'pl-fe/components/ui/button'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { usePlFeConfig } from 'pl-fe/hooks/usePlFeConfig'; const acceptedGdpr = !!localStorage.getItem('plfe:gdpr'); diff --git a/packages/pl-fe/src/components/group-card.tsx b/packages/pl-fe/src/components/group-card.tsx index 11c1d2b21..66c604e56 100644 --- a/packages/pl-fe/src/components/group-card.tsx +++ b/packages/pl-fe/src/components/group-card.tsx @@ -1,14 +1,16 @@ import React from 'react'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import GroupHeaderImage from 'pl-fe/features/group/components/group-header-image'; import GroupMemberCount from 'pl-fe/features/group/components/group-member-count'; import GroupPrivacy from 'pl-fe/features/group/components/group-privacy'; import GroupRelationship from 'pl-fe/features/group/components/group-relationship'; import GroupAvatar from './groups/group-avatar'; -import { HStack, Stack, Text } from './ui'; -import type { Group as GroupEntity } from 'pl-fe/normalizers'; +import type { Group as GroupEntity } from 'pl-fe/normalizers/group'; interface IGroupCard { group: GroupEntity; diff --git a/packages/pl-fe/src/components/groups/group-avatar.tsx b/packages/pl-fe/src/components/groups/group-avatar.tsx index a69fba7f7..4ffeacf86 100644 --- a/packages/pl-fe/src/components/groups/group-avatar.tsx +++ b/packages/pl-fe/src/components/groups/group-avatar.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import { GroupRoles, type Group } from 'pl-api'; import React from 'react'; -import { Avatar } from '../ui'; +import Avatar from 'pl-fe/components/ui/avatar'; interface IGroupAvatar { group: Pick; diff --git a/packages/pl-fe/src/components/groups/popover/group-popover.tsx b/packages/pl-fe/src/components/groups/popover/group-popover.tsx index cae138357..88daf39e8 100644 --- a/packages/pl-fe/src/components/groups/popover/group-popover.tsx +++ b/packages/pl-fe/src/components/groups/popover/group-popover.tsx @@ -2,13 +2,18 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { Link, matchPath, useHistory } from 'react-router-dom'; -import { Button, Divider, HStack, Popover, Stack, Text } from 'pl-fe/components/ui'; +import Button from 'pl-fe/components/ui/button'; +import Divider from 'pl-fe/components/ui/divider'; +import HStack from 'pl-fe/components/ui/hstack'; +import Popover from 'pl-fe/components/ui/popover'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import GroupMemberCount from 'pl-fe/features/group/components/group-member-count'; import GroupPrivacy from 'pl-fe/features/group/components/group-privacy'; import GroupAvatar from '../group-avatar'; -import type { Group } from 'pl-fe/normalizers'; +import type { Group } from 'pl-fe/normalizers/group'; interface IGroupPopoverContainer { children: React.ReactElement>; diff --git a/packages/pl-fe/src/components/hashtag.tsx b/packages/pl-fe/src/components/hashtag.tsx index 0680524d6..d5e7a2e0e 100644 --- a/packages/pl-fe/src/components/hashtag.tsx +++ b/packages/pl-fe/src/components/hashtag.tsx @@ -3,9 +3,11 @@ import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; import { Sparklines, SparklinesCurve } from 'react-sparklines'; -import { shortNumberFormat } from '../utils/numbers'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; -import { HStack, Stack, Text } from './ui'; +import { shortNumberFormat } from '../utils/numbers'; import type { Tag } from 'pl-api'; diff --git a/packages/pl-fe/src/components/helmet.tsx b/packages/pl-fe/src/components/helmet.tsx index 7b1aee72c..7e5be97a5 100644 --- a/packages/pl-fe/src/components/helmet.tsx +++ b/packages/pl-fe/src/components/helmet.tsx @@ -2,7 +2,9 @@ import React from 'react'; import { Helmet as ReactHelmet } from 'react-helmet-async'; import { useStatContext } from 'pl-fe/contexts/stat-context'; -import { useAppSelector, useInstance, useSettings } from 'pl-fe/hooks'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import { RootState } from 'pl-fe/store'; import FaviconService from 'pl-fe/utils/favicon-service'; diff --git a/packages/pl-fe/src/components/hover-account-wrapper.tsx b/packages/pl-fe/src/components/hover-account-wrapper.tsx index c14c86207..3e7886d43 100644 --- a/packages/pl-fe/src/components/hover-account-wrapper.tsx +++ b/packages/pl-fe/src/components/hover-account-wrapper.tsx @@ -3,9 +3,9 @@ import debounce from 'lodash/debounce'; import React, { useRef } from 'react'; import { fetchAccount } from 'pl-fe/actions/accounts'; -import { useAppDispatch } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; import { isMobile } from 'pl-fe/is-mobile'; -import { useAccountHoverCardStore } from 'pl-fe/stores'; +import { useAccountHoverCardStore } from 'pl-fe/stores/account-hover-card'; const showAccountHoverCard = debounce((openAccountHoverCard, ref, accountId) => { openAccountHoverCard(ref, accountId); diff --git a/packages/pl-fe/src/components/hover-status-wrapper.tsx b/packages/pl-fe/src/components/hover-status-wrapper.tsx index 77cfc548f..95502b2e9 100644 --- a/packages/pl-fe/src/components/hover-status-wrapper.tsx +++ b/packages/pl-fe/src/components/hover-status-wrapper.tsx @@ -3,7 +3,7 @@ import debounce from 'lodash/debounce'; import React, { useRef } from 'react'; import { isMobile } from 'pl-fe/is-mobile'; -import { useStatusHoverCardStore } from 'pl-fe/stores'; +import { useStatusHoverCardStore } from 'pl-fe/stores/status-hover-card'; const showStatusHoverCard = debounce((openStatusHoverCard, ref, statusId) => { openStatusHoverCard(ref, statusId); diff --git a/packages/pl-fe/src/components/icon-with-counter.tsx b/packages/pl-fe/src/components/icon-with-counter.tsx index 4b81bc274..ec97b09d9 100644 --- a/packages/pl-fe/src/components/icon-with-counter.tsx +++ b/packages/pl-fe/src/components/icon-with-counter.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Icon, { IIcon } from 'pl-fe/components/icon'; -import { Counter } from 'pl-fe/components/ui'; +import Counter from 'pl-fe/components/ui/counter'; interface IIconWithCounter extends React.HTMLAttributes { count: number; diff --git a/packages/pl-fe/src/components/list.tsx b/packages/pl-fe/src/components/list.tsx index 0e91bc00f..d5881ff4b 100644 --- a/packages/pl-fe/src/components/list.tsx +++ b/packages/pl-fe/src/components/list.tsx @@ -2,9 +2,10 @@ import clsx from 'clsx'; import React from 'react'; import { Link } from 'react-router-dom'; -import { SelectDropdown } from '../features/forms'; - -import { Icon, HStack, Select } from './ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Select from 'pl-fe/components/ui/select'; +import { SelectDropdown } from 'pl-fe/features/forms'; interface IList { children: React.ReactNode; diff --git a/packages/pl-fe/src/components/load-more.tsx b/packages/pl-fe/src/components/load-more.tsx index 1bf634be3..14944eee8 100644 --- a/packages/pl-fe/src/components/load-more.tsx +++ b/packages/pl-fe/src/components/load-more.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; -import { Button } from 'pl-fe/components/ui'; +import Button from 'pl-fe/components/ui/button'; interface ILoadMore { onClick: React.MouseEventHandler; diff --git a/packages/pl-fe/src/components/loading-screen.tsx b/packages/pl-fe/src/components/loading-screen.tsx index 5a89465bf..7c53233e0 100644 --- a/packages/pl-fe/src/components/loading-screen.tsx +++ b/packages/pl-fe/src/components/loading-screen.tsx @@ -1,7 +1,7 @@ import React from 'react'; import LandingGradient from 'pl-fe/components/landing-gradient'; -import { Spinner } from 'pl-fe/components/ui'; +import Spinner from 'pl-fe/components/ui/spinner'; /** Fullscreen loading indicator. */ const LoadingScreen: React.FC = () => ( diff --git a/packages/pl-fe/src/components/location-search.tsx b/packages/pl-fe/src/components/location-search.tsx index 368841db5..5746e4666 100644 --- a/packages/pl-fe/src/components/location-search.tsx +++ b/packages/pl-fe/src/components/location-search.tsx @@ -6,7 +6,7 @@ import { defineMessages, useIntl } from 'react-intl'; import { locationSearch } from 'pl-fe/actions/events'; import AutosuggestInput, { AutoSuggestion } from 'pl-fe/components/autosuggest-input'; import Icon from 'pl-fe/components/icon'; -import { useAppDispatch } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; import AutosuggestLocation from './autosuggest-location'; diff --git a/packages/pl-fe/src/components/markup.tsx b/packages/pl-fe/src/components/markup.tsx index 898bf68d9..058bf8070 100644 --- a/packages/pl-fe/src/components/markup.tsx +++ b/packages/pl-fe/src/components/markup.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Text, { IText } from './ui/text/text'; +import Text, { IText } from './ui/text'; interface IMarkup extends IText { } diff --git a/packages/pl-fe/src/components/media-gallery.tsx b/packages/pl-fe/src/components/media-gallery.tsx index ad84f1dd7..03e67cf69 100644 --- a/packages/pl-fe/src/components/media-gallery.tsx +++ b/packages/pl-fe/src/components/media-gallery.tsx @@ -5,7 +5,8 @@ import Blurhash from 'pl-fe/components/blurhash'; import Icon from 'pl-fe/components/icon'; import StillImage from 'pl-fe/components/still-image'; import { MIMETYPE_ICONS } from 'pl-fe/components/upload'; -import { useSettings, usePlFeConfig } from 'pl-fe/hooks'; +import { usePlFeConfig } from 'pl-fe/hooks/usePlFeConfig'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import { truncateFilename } from 'pl-fe/utils/media'; import { isIOS } from '../is-mobile'; diff --git a/packages/pl-fe/src/components/mention.tsx b/packages/pl-fe/src/components/mention.tsx index 582d98990..68bcabb39 100644 --- a/packages/pl-fe/src/components/mention.tsx +++ b/packages/pl-fe/src/components/mention.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Link } from 'react-router-dom'; -import { Tooltip } from './ui'; +import Tooltip from 'pl-fe/components/ui/tooltip'; import type { Mention as MentionEntity } from 'pl-api'; diff --git a/packages/pl-fe/src/components/missing-indicator.tsx b/packages/pl-fe/src/components/missing-indicator.tsx index 0adb8ec72..397b55f14 100644 --- a/packages/pl-fe/src/components/missing-indicator.tsx +++ b/packages/pl-fe/src/components/missing-indicator.tsx @@ -1,7 +1,9 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; -import { Card, CardBody, Stack, Text } from './ui'; +import Card, { CardBody } from 'pl-fe/components/ui/card'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; interface MissingIndicatorProps { nested?: boolean; diff --git a/packages/pl-fe/src/components/modal-root.tsx b/packages/pl-fe/src/components/modal-root.tsx index dd658e786..2179ded0f 100644 --- a/packages/pl-fe/src/components/modal-root.tsx +++ b/packages/pl-fe/src/components/modal-root.tsx @@ -6,8 +6,9 @@ import 'wicg-inert'; import { cancelReplyCompose } from 'pl-fe/actions/compose'; import { saveDraftStatus } from 'pl-fe/actions/draft-statuses'; -import { useAppDispatch, usePrevious } from 'pl-fe/hooks'; -import { useModalsStore } from 'pl-fe/stores'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { usePrevious } from 'pl-fe/hooks/usePrevious'; +import { useModalsStore } from 'pl-fe/stores/modals'; import type { ModalType } from 'pl-fe/features/ui/components/modal-root'; import type { ReducerCompose } from 'pl-fe/reducers/compose'; diff --git a/packages/pl-fe/src/components/navlinks.tsx b/packages/pl-fe/src/components/navlinks.tsx index 3005ae8b2..84dc68735 100644 --- a/packages/pl-fe/src/components/navlinks.tsx +++ b/packages/pl-fe/src/components/navlinks.tsx @@ -1,8 +1,9 @@ import React from 'react'; import { Link } from 'react-router-dom'; -import { Text } from 'pl-fe/components/ui'; -import { useSettings, usePlFeConfig } from 'pl-fe/hooks'; +import Text from 'pl-fe/components/ui/text'; +import { usePlFeConfig } from 'pl-fe/hooks/usePlFeConfig'; +import { useSettings } from 'pl-fe/hooks/useSettings'; interface INavlinks { type: string; diff --git a/packages/pl-fe/src/components/pending-items-row.tsx b/packages/pl-fe/src/components/pending-items-row.tsx index c84549d75..78c3adf56 100644 --- a/packages/pl-fe/src/components/pending-items-row.tsx +++ b/packages/pl-fe/src/components/pending-items-row.tsx @@ -3,7 +3,9 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; -import { HStack, Icon, Text } from 'pl-fe/components/ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; interface IPendingItemsRow { /** Path to navigate the user when clicked. */ diff --git a/packages/pl-fe/src/components/polls/poll-footer.tsx b/packages/pl-fe/src/components/polls/poll-footer.tsx index 50d5c5bce..d619a4bc4 100644 --- a/packages/pl-fe/src/components/polls/poll-footer.tsx +++ b/packages/pl-fe/src/components/polls/poll-footer.tsx @@ -2,13 +2,17 @@ import React from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; import { fetchPoll, vote } from 'pl-fe/actions/polls'; -import { useAppDispatch } from 'pl-fe/hooks'; +import Button from 'pl-fe/components/ui/button'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import Tooltip from 'pl-fe/components/ui/tooltip'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; import RelativeTimestamp from '../relative-timestamp'; -import { Button, HStack, Stack, Text, Tooltip } from '../ui'; import type { Selected } from './poll'; -import type { Poll } from 'pl-fe/normalizers'; +import type { Poll } from 'pl-fe/normalizers/poll'; const messages = defineMessages({ closed: { id: 'poll.closed', defaultMessage: 'Closed' }, diff --git a/packages/pl-fe/src/components/polls/poll-option.tsx b/packages/pl-fe/src/components/polls/poll-option.tsx index 607a2b129..99cf9c14b 100644 --- a/packages/pl-fe/src/components/polls/poll-option.tsx +++ b/packages/pl-fe/src/components/polls/poll-option.tsx @@ -3,9 +3,11 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { Motion, presets, spring } from 'react-motion'; -import { HStack, Icon, Text } from '../ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; -import type { Poll } from 'pl-fe/normalizers'; +import type { Poll } from 'pl-fe/normalizers/poll'; const messages = defineMessages({ voted: { id: 'poll.voted', defaultMessage: 'You voted for this answer' }, diff --git a/packages/pl-fe/src/components/polls/poll.tsx b/packages/pl-fe/src/components/polls/poll.tsx index 86682921c..71c7efb30 100644 --- a/packages/pl-fe/src/components/polls/poll.tsx +++ b/packages/pl-fe/src/components/polls/poll.tsx @@ -2,15 +2,16 @@ import React, { useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { vote } from 'pl-fe/actions/polls'; -import { useAppDispatch, useAppSelector } from 'pl-fe/hooks'; -import { useModalsStore } from 'pl-fe/stores'; - -import { Stack, Text } from '../ui'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useModalsStore } from 'pl-fe/stores/modals'; import PollFooter from './poll-footer'; import PollOption from './poll-option'; -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; type Selected = Record; diff --git a/packages/pl-fe/src/components/preview-card.tsx b/packages/pl-fe/src/components/preview-card.tsx index 9564fbe1e..b8e16d498 100644 --- a/packages/pl-fe/src/components/preview-card.tsx +++ b/packages/pl-fe/src/components/preview-card.tsx @@ -4,7 +4,10 @@ import React, { useState, useEffect } from 'react'; import * as v from 'valibot'; import Blurhash from 'pl-fe/components/blurhash'; -import { HStack, Stack, Text, Icon } from 'pl-fe/components/ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import { addAutoPlay } from 'pl-fe/utils/media'; import { getTextDirection } from 'pl-fe/utils/rtl'; diff --git a/packages/pl-fe/src/components/pull-to-refresh.tsx b/packages/pl-fe/src/components/pull-to-refresh.tsx index 6f44d549f..644c772d3 100644 --- a/packages/pl-fe/src/components/pull-to-refresh.tsx +++ b/packages/pl-fe/src/components/pull-to-refresh.tsx @@ -1,7 +1,7 @@ import React from 'react'; import PTRComponent from 'react-simple-pull-to-refresh'; -import { Spinner } from 'pl-fe/components/ui'; +import Spinner from 'pl-fe/components/ui/spinner'; interface IPullToRefresh { onRefresh?: () => Promise; diff --git a/packages/pl-fe/src/components/quoted-status-indicator.tsx b/packages/pl-fe/src/components/quoted-status-indicator.tsx index 630aa479d..c18d182bc 100644 --- a/packages/pl-fe/src/components/quoted-status-indicator.tsx +++ b/packages/pl-fe/src/components/quoted-status-indicator.tsx @@ -1,7 +1,9 @@ import { useStatus } from 'pl-hooks'; import React from 'react'; -import { HStack, Icon, Text } from 'pl-fe/components/ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; interface IQuotedStatusIndicator { /** The quoted status id. */ diff --git a/packages/pl-fe/src/components/quoted-status.test.tsx b/packages/pl-fe/src/components/quoted-status.test.tsx index c979ce3e7..a5dac5119 100644 --- a/packages/pl-fe/src/components/quoted-status.test.tsx +++ b/packages/pl-fe/src/components/quoted-status.test.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { render, screen, rootState } from 'pl-fe/jest/test-helpers'; -import { normalizeStatus, normalizeAccount } from 'pl-fe/normalizers'; +import { normalizeAccount } from 'pl-fe/normalizers/account'; +import { normalizeStatus } from 'pl-fe/normalizers/status'; import QuotedStatus from './quoted-status'; diff --git a/packages/pl-fe/src/components/quoted-status.tsx b/packages/pl-fe/src/components/quoted-status.tsx index 1e3c883ad..b1f8e388b 100644 --- a/packages/pl-fe/src/components/quoted-status.tsx +++ b/packages/pl-fe/src/components/quoted-status.tsx @@ -4,7 +4,7 @@ import { defineMessages, useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; import StatusMedia from 'pl-fe/components/status-media'; -import { Stack } from 'pl-fe/components/ui'; +import Stack from 'pl-fe/components/ui/stack'; import AccountContainer from 'pl-fe/containers/account-container'; import EventPreview from './event-preview'; diff --git a/packages/pl-fe/src/components/relative-timestamp.tsx b/packages/pl-fe/src/components/relative-timestamp.tsx index af74b9232..cd6c890c4 100644 --- a/packages/pl-fe/src/components/relative-timestamp.tsx +++ b/packages/pl-fe/src/components/relative-timestamp.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { injectIntl, defineMessages, IntlShape, FormatDateOptions } from 'react-intl'; -import Text, { IText } from './ui/text/text'; +import Text, { IText } from './ui/text'; const messages = defineMessages({ just_now: { id: 'relative_time.just_now', defaultMessage: 'now' }, diff --git a/packages/pl-fe/src/components/scrobble.tsx b/packages/pl-fe/src/components/scrobble.tsx index 6a437a4dd..088ca4ccf 100644 --- a/packages/pl-fe/src/components/scrobble.tsx +++ b/packages/pl-fe/src/components/scrobble.tsx @@ -2,7 +2,9 @@ import clsx from 'clsx'; import React, { useMemo, useRef } from 'react'; import { FormattedMessage } from 'react-intl'; -import { HStack, Icon, Text } from './ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; import type { Scrobble as ScrobbleEntity } from 'pl-api'; diff --git a/packages/pl-fe/src/components/scroll-top-button.tsx b/packages/pl-fe/src/components/scroll-top-button.tsx index b2956ddeb..f0d517231 100644 --- a/packages/pl-fe/src/components/scroll-top-button.tsx +++ b/packages/pl-fe/src/components/scroll-top-button.tsx @@ -2,8 +2,9 @@ import throttle from 'lodash/throttle'; import React, { useState, useEffect, useCallback } from 'react'; import { useIntl, MessageDescriptor } from 'react-intl'; -import { Icon, Text } from 'pl-fe/components/ui'; -import { useSettings } from 'pl-fe/hooks'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; +import { useSettings } from 'pl-fe/hooks/useSettings'; interface IScrollTopButton { /** Callback when clicked, and also when scrolled to the top. */ diff --git a/packages/pl-fe/src/components/scrollable-list.tsx b/packages/pl-fe/src/components/scrollable-list.tsx index 6d08a52a0..4f3d34b5f 100644 --- a/packages/pl-fe/src/components/scrollable-list.tsx +++ b/packages/pl-fe/src/components/scrollable-list.tsx @@ -3,10 +3,10 @@ import { useVirtualizer, useWindowVirtualizer, type Virtualizer } from '@tanstac import clsx from 'clsx'; import React, { useEffect, useMemo, useRef } from 'react'; -import { useSettings } from 'pl-fe/hooks'; - -import LoadMore from './load-more'; -import { Card, Spinner } from './ui'; +import LoadMore from 'pl-fe/components/load-more'; +import Card from 'pl-fe/components/ui/card'; +import Spinner from 'pl-fe/components/ui/spinner'; +import { useSettings } from 'pl-fe/hooks/useSettings'; interface IScrollableListBase { /** Pagination callback when the end of the list is reached. */ diff --git a/packages/pl-fe/src/components/sentry-feedback-form.tsx b/packages/pl-fe/src/components/sentry-feedback-form.tsx index 2339daa3e..1c295ee9f 100644 --- a/packages/pl-fe/src/components/sentry-feedback-form.tsx +++ b/packages/pl-fe/src/components/sentry-feedback-form.tsx @@ -1,8 +1,13 @@ import React, { useState } from 'react'; import { FormattedMessage } from 'react-intl'; -import { Textarea, Form, Button, FormGroup, FormActions, Text } from 'pl-fe/components/ui'; -import { useOwnAccount } from 'pl-fe/hooks'; +import Button from 'pl-fe/components/ui/button'; +import Form from 'pl-fe/components/ui/form'; +import FormActions from 'pl-fe/components/ui/form-actions'; +import FormGroup from 'pl-fe/components/ui/form-group'; +import Text from 'pl-fe/components/ui/text'; +import Textarea from 'pl-fe/components/ui/textarea'; +import { useOwnAccount } from 'pl-fe/hooks/useOwnAccount'; import { captureSentryFeedback } from 'pl-fe/sentry'; interface ISentryFeedbackForm { diff --git a/packages/pl-fe/src/components/sidebar-menu.tsx b/packages/pl-fe/src/components/sidebar-menu.tsx index 620512761..9420042d1 100644 --- a/packages/pl-fe/src/components/sidebar-menu.tsx +++ b/packages/pl-fe/src/components/sidebar-menu.tsx @@ -5,17 +5,26 @@ import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; import { Link, NavLink } from 'react-router-dom'; import { fetchOwnAccounts, logOut, switchAccount } from 'pl-fe/actions/auth'; -import { useAccount } from 'pl-fe/api/hooks'; +import { useAccount } from 'pl-fe/api/hooks/accounts/useAccount'; import Account from 'pl-fe/components/account'; -import { Stack, Divider, HStack, Icon, Text } from 'pl-fe/components/ui'; +import Divider from 'pl-fe/components/ui/divider'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import ProfileStats from 'pl-fe/features/ui/components/profile-stats'; -import { useAppDispatch, useAppSelector, useFeatures, useInstance, useRegistrationStatus } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { useRegistrationStatus } from 'pl-fe/hooks/useRegistrationStatus'; import { makeGetOtherAccounts } from 'pl-fe/selectors'; -import { useUiStore, useSettingsStore } from 'pl-fe/stores'; +import { useSettingsStore } from 'pl-fe/stores/settings'; +import { useUiStore } from 'pl-fe/stores/ui'; import sourceCode from 'pl-fe/utils/code'; import type { List as ImmutableList } from 'immutable'; -import type { Account as AccountEntity } from 'pl-fe/normalizers'; +import type { Account as AccountEntity } from 'pl-fe/normalizers/account'; const messages = defineMessages({ profile: { id: 'account.profile', defaultMessage: 'Profile' }, diff --git a/packages/pl-fe/src/components/sidebar-navigation-link.tsx b/packages/pl-fe/src/components/sidebar-navigation-link.tsx index d5315d949..8b66abf63 100644 --- a/packages/pl-fe/src/components/sidebar-navigation-link.tsx +++ b/packages/pl-fe/src/components/sidebar-navigation-link.tsx @@ -2,9 +2,10 @@ import clsx from 'clsx'; import React from 'react'; import { NavLink } from 'react-router-dom'; -import { useSettings } from 'pl-fe/hooks'; +import { useSettings } from 'pl-fe/hooks/useSettings'; -import { Icon, Text } from './ui'; +import Icon from './ui/icon'; +import Text from './ui/text'; interface ISidebarNavigationLink { /** Notification count, if any. */ diff --git a/packages/pl-fe/src/components/sidebar-navigation.tsx b/packages/pl-fe/src/components/sidebar-navigation.tsx index eb5306b71..a23e56246 100644 --- a/packages/pl-fe/src/components/sidebar-navigation.tsx +++ b/packages/pl-fe/src/components/sidebar-navigation.tsx @@ -1,12 +1,19 @@ import React from 'react'; import { defineMessages, FormattedMessage, useIntl } from 'react-intl'; -import { Icon, Stack } from 'pl-fe/components/ui'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; import { useStatContext } from 'pl-fe/contexts/stat-context'; import Search from 'pl-fe/features/search/components/search'; import ComposeButton from 'pl-fe/features/ui/components/compose-button'; import ProfileDropdown from 'pl-fe/features/ui/components/profile-dropdown'; -import { useAppSelector, useFeatures, useOwnAccount, useSettings, useInstance, useRegistrationStatus, useLogo } from 'pl-fe/hooks'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { useLogo } from 'pl-fe/hooks/useLogo'; +import { useOwnAccount } from 'pl-fe/hooks/useOwnAccount'; +import { useRegistrationStatus } from 'pl-fe/hooks/useRegistrationStatus'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import Account from './account'; import DropdownMenu, { Menu } from './dropdown-menu'; diff --git a/packages/pl-fe/src/components/site-error-boundary.tsx b/packages/pl-fe/src/components/site-error-boundary.tsx index ab49d4440..3a76e3b40 100644 --- a/packages/pl-fe/src/components/site-error-boundary.tsx +++ b/packages/pl-fe/src/components/site-error-boundary.tsx @@ -3,8 +3,12 @@ import { ErrorBoundary } from 'react-error-boundary'; import { FormattedMessage } from 'react-intl'; import { NODE_ENV } from 'pl-fe/build-config'; -import { HStack, Text, Stack, Textarea } from 'pl-fe/components/ui'; -import { useLogo, usePlFeConfig } from 'pl-fe/hooks'; +import HStack from 'pl-fe/components/ui/hstack'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import Textarea from 'pl-fe/components/ui/textarea'; +import { useLogo } from 'pl-fe/hooks/useLogo'; +import { usePlFeConfig } from 'pl-fe/hooks/usePlFeConfig'; import { captureSentryException } from 'pl-fe/sentry'; import KVStore from 'pl-fe/storage/kv-store'; import sourceCode from 'pl-fe/utils/code'; diff --git a/packages/pl-fe/src/components/site-logo.tsx b/packages/pl-fe/src/components/site-logo.tsx index 14109eb03..b194be332 100644 --- a/packages/pl-fe/src/components/site-logo.tsx +++ b/packages/pl-fe/src/components/site-logo.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; -import { useLogo } from 'pl-fe/hooks'; +import { useLogo } from 'pl-fe/hooks/useLogo'; const messages = defineMessages({ logo: { id: 'generic.logo', defaultMessage: 'Logo' }, diff --git a/packages/pl-fe/src/components/status-action-bar.tsx b/packages/pl-fe/src/components/status-action-bar.tsx index 11e3a9976..ca96e3a67 100644 --- a/packages/pl-fe/src/components/status-action-bar.tsx +++ b/packages/pl-fe/src/components/status-action-bar.tsx @@ -14,16 +14,24 @@ import { initReport, ReportableEntities } from 'pl-fe/actions/reports'; import { changeSetting } from 'pl-fe/actions/settings'; import { deleteStatus, editStatus, toggleMuteStatus, translateStatus, undoStatusTranslation } from 'pl-fe/actions/statuses'; import { deleteFromTimelines } from 'pl-fe/actions/timelines'; -import { useBlockGroupMember, useGroup, useGroupRelationship, useTranslationLanguages } from 'pl-fe/api/hooks'; +import { useBlockGroupMember } from 'pl-fe/api/hooks/groups/useBlockGroupMember'; import { useDeleteGroupStatus } from 'pl-fe/api/hooks/groups/useDeleteGroupStatus'; +import { useGroup } from 'pl-fe/api/hooks/groups/useGroup'; +import { useGroupRelationship } from 'pl-fe/api/hooks/groups/useGroupRelationship'; +import { useTranslationLanguages } from 'pl-fe/api/hooks/instance/useTranslationLanguages'; import DropdownMenu from 'pl-fe/components/dropdown-menu'; import StatusActionButton from 'pl-fe/components/status-action-button'; -import { HStack } from 'pl-fe/components/ui'; +import HStack from 'pl-fe/components/ui/hstack'; import EmojiPickerDropdown from 'pl-fe/features/emoji/containers/emoji-picker-dropdown-container'; import { languages } from 'pl-fe/features/preferences'; -import { useAppDispatch, useAppSelector, useFeatures, useInstance, useOwnAccount, useSettings } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { useOwnAccount } from 'pl-fe/hooks/useOwnAccount'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import { useChats } from 'pl-fe/queries/chats'; -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; import toast from 'pl-fe/toast'; import copy from 'pl-fe/utils/copy'; @@ -32,7 +40,8 @@ import GroupPopover from './groups/popover/group-popover'; import type { Menu } from 'pl-fe/components/dropdown-menu'; import type { Emoji as EmojiType } from 'pl-fe/features/emoji'; import type { UnauthorizedModalAction } from 'pl-fe/features/ui/components/modals/unauthorized-modal'; -import type { Account, Group } from 'pl-fe/normalizers'; +import type { Account } from 'pl-fe/normalizers/account'; +import type { Group } from 'pl-fe/normalizers/group'; import type { SelectedStatus } from 'pl-fe/selectors'; const messages = defineMessages({ diff --git a/packages/pl-fe/src/components/status-action-button.tsx b/packages/pl-fe/src/components/status-action-button.tsx index ab29ed4b5..450dd3f7a 100644 --- a/packages/pl-fe/src/components/status-action-button.tsx +++ b/packages/pl-fe/src/components/status-action-button.tsx @@ -2,8 +2,10 @@ import { useLongPress } from '@uidotdev/usehooks'; import clsx from 'clsx'; import React from 'react'; -import { Text, Icon, Emoji } from 'pl-fe/components/ui'; -import { useSettings } from 'pl-fe/hooks'; +import Emoji from 'pl-fe/components/ui/emoji'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import AnimatedNumber from './animated-number'; diff --git a/packages/pl-fe/src/components/status-content.tsx b/packages/pl-fe/src/components/status-content.tsx index 08ecf7254..9404c59cc 100644 --- a/packages/pl-fe/src/components/status-content.tsx +++ b/packages/pl-fe/src/components/status-content.tsx @@ -4,8 +4,11 @@ import { FormattedMessage } from 'react-intl'; import { collapseStatusSpoiler, expandStatusSpoiler } from 'pl-fe/actions/statuses'; import Icon from 'pl-fe/components/icon'; -import { Button, Stack, Text } from 'pl-fe/components/ui'; -import { useAppDispatch, useSettings } from 'pl-fe/hooks'; +import Button from 'pl-fe/components/ui/button'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useSettings } from 'pl-fe/hooks/useSettings'; import { onlyEmoji as isOnlyEmoji } from 'pl-fe/utils/rich-content'; import { getTextDirection } from '../utils/rtl'; @@ -14,7 +17,7 @@ import Markup from './markup'; import { ParsedContent } from './parsed-content'; import Poll from './polls/poll'; -import type { Sizes } from 'pl-fe/components/ui/text/text'; +import type { Sizes } from 'pl-fe/components/ui/text'; import type { MinifiedStatus } from 'pl-fe/reducers/statuses'; const BIG_EMOJI_LIMIT = 10; diff --git a/packages/pl-fe/src/components/status-hover-card.tsx b/packages/pl-fe/src/components/status-hover-card.tsx index df5578abf..a266ccc20 100644 --- a/packages/pl-fe/src/components/status-hover-card.tsx +++ b/packages/pl-fe/src/components/status-hover-card.tsx @@ -5,12 +5,12 @@ import { useIntl } from 'react-intl'; import { useHistory } from 'react-router-dom'; import { fetchStatus } from 'pl-fe/actions/statuses'; +import { showStatusHoverCard } from 'pl-fe/components/hover-status-wrapper'; +import Card, { CardBody } from 'pl-fe/components/ui/card'; import StatusContainer from 'pl-fe/containers/status-container'; -import { useAppSelector, useAppDispatch } from 'pl-fe/hooks'; -import { useStatusHoverCardStore } from 'pl-fe/stores'; - -import { showStatusHoverCard } from './hover-status-wrapper'; -import { Card, CardBody } from './ui'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useStatusHoverCardStore } from 'pl-fe/stores/status-hover-card'; interface IStatusHoverCard { visible?: boolean; diff --git a/packages/pl-fe/src/components/status-language-picker.tsx b/packages/pl-fe/src/components/status-language-picker.tsx index d4d896df8..b1832b61d 100644 --- a/packages/pl-fe/src/components/status-language-picker.tsx +++ b/packages/pl-fe/src/components/status-language-picker.tsx @@ -2,13 +2,15 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { changeStatusLanguage } from 'pl-fe/actions/statuses'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; import { type Language, languages } from 'pl-fe/features/preferences'; -import { useAppDispatch } from 'pl-fe/hooks'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; import DropdownMenu from './dropdown-menu'; -import { HStack, Icon, Text } from './ui'; -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; const messages = defineMessages({ languageVersions: { id: 'status.language_versions', defaultMessage: 'The post has multiple language versions.' }, diff --git a/packages/pl-fe/src/components/status-list.tsx b/packages/pl-fe/src/components/status-list.tsx index de5da2065..8b287db35 100644 --- a/packages/pl-fe/src/components/status-list.tsx +++ b/packages/pl-fe/src/components/status-list.tsx @@ -1,19 +1,18 @@ import clsx from 'clsx'; +import { OrderedSet as ImmutableOrderedSet } from 'immutable'; import debounce from 'lodash/debounce'; import React, { useCallback } from 'react'; import { FormattedMessage } from 'react-intl'; import LoadGap from 'pl-fe/components/load-gap'; import ScrollableList, { type IScrollableListWithContainer } from 'pl-fe/components/scrollable-list'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import StatusContainer from 'pl-fe/containers/status-container'; import FeedSuggestions from 'pl-fe/features/feed-suggestions/feed-suggestions'; import PlaceholderStatus from 'pl-fe/features/placeholder/components/placeholder-status'; import PendingStatus from 'pl-fe/features/ui/components/pending-status'; -import { usePlFeConfig } from 'pl-fe/hooks'; - -import { Stack, Text } from './ui'; - -import type { OrderedSet as ImmutableOrderedSet } from 'immutable'; +import { usePlFeConfig } from 'pl-fe/hooks/usePlFeConfig'; interface IStatusList extends Omit { /** Unique key to preserve the scroll position when navigating back. */ diff --git a/packages/pl-fe/src/components/status-media.tsx b/packages/pl-fe/src/components/status-media.tsx index 127ab0fbc..f0cf4e7e6 100644 --- a/packages/pl-fe/src/components/status-media.tsx +++ b/packages/pl-fe/src/components/status-media.tsx @@ -4,13 +4,13 @@ import AttachmentThumbs from 'pl-fe/components/attachment-thumbs'; import PreviewCard from 'pl-fe/components/preview-card'; import PlaceholderCard from 'pl-fe/features/placeholder/components/placeholder-card'; import { MediaGallery, Video, Audio } from 'pl-fe/features/ui/util/async-components'; -import { useSettings } from 'pl-fe/hooks'; -import { useModalsStore } from 'pl-fe/stores'; +import { useSettings } from 'pl-fe/hooks/useSettings'; +import { useModalsStore } from 'pl-fe/stores/modals'; import { isMediaVisible } from './statuses/sensitive-content-overlay'; import type { MediaAttachment } from 'pl-api'; -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; interface IStatusMedia { /** Status entity to render media for. */ diff --git a/packages/pl-fe/src/components/status-mention.tsx b/packages/pl-fe/src/components/status-mention.tsx index b099ff21c..d0b002397 100644 --- a/packages/pl-fe/src/components/status-mention.tsx +++ b/packages/pl-fe/src/components/status-mention.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Link } from 'react-router-dom'; -import { useAccount } from 'pl-fe/api/hooks'; +import { useAccount } from 'pl-fe/api/hooks/accounts/useAccount'; import HoverAccountWrapper from './hover-account-wrapper'; diff --git a/packages/pl-fe/src/components/status-reactions-bar.tsx b/packages/pl-fe/src/components/status-reactions-bar.tsx index 579f2cf09..032357b13 100644 --- a/packages/pl-fe/src/components/status-reactions-bar.tsx +++ b/packages/pl-fe/src/components/status-reactions-bar.tsx @@ -4,13 +4,19 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { emojiReact, unEmojiReact } from 'pl-fe/actions/emoji-reacts'; +import Emoji from 'pl-fe/components/ui/emoji'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Text from 'pl-fe/components/ui/text'; import EmojiPickerDropdown from 'pl-fe/features/emoji/containers/emoji-picker-dropdown-container'; import unicodeMapping from 'pl-fe/features/emoji/mapping'; -import { useAppDispatch, useFeatures, useLoggedIn, useSettings } from 'pl-fe/hooks'; -import { useModalsStore } from 'pl-fe/stores'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useLoggedIn } from 'pl-fe/hooks/useLoggedIn'; +import { useSettings } from 'pl-fe/hooks/useSettings'; +import { useModalsStore } from 'pl-fe/stores/modals'; import AnimatedNumber from './animated-number'; -import { Emoji, HStack, Icon, Text } from './ui'; import type { EmojiReaction } from 'pl-api'; import type { Emoji as EmojiType } from 'pl-fe/features/emoji'; diff --git a/packages/pl-fe/src/components/status-reply-mentions.tsx b/packages/pl-fe/src/components/status-reply-mentions.tsx index c1f3469bb..ce0900661 100644 --- a/packages/pl-fe/src/components/status-reply-mentions.tsx +++ b/packages/pl-fe/src/components/status-reply-mentions.tsx @@ -4,9 +4,9 @@ import { Link } from 'react-router-dom'; import HoverAccountWrapper from 'pl-fe/components/hover-account-wrapper'; import HoverStatusWrapper from 'pl-fe/components/hover-status-wrapper'; -import { useModalsStore } from 'pl-fe/stores'; +import { useModalsStore } from 'pl-fe/stores/modals'; -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; interface IStatusReplyMentions { status: Pick; diff --git a/packages/pl-fe/src/components/status.test.tsx b/packages/pl-fe/src/components/status.test.tsx index b440b3615..4872720f1 100644 --- a/packages/pl-fe/src/components/status.test.tsx +++ b/packages/pl-fe/src/components/status.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { buildAccount } from 'pl-fe/jest/factory'; import { render, screen, rootState } from 'pl-fe/jest/test-helpers'; -import { normalizeStatus } from 'pl-fe/normalizers'; +import { normalizeStatus } from 'pl-fe/normalizers/status'; import Status from './status'; diff --git a/packages/pl-fe/src/components/status.tsx b/packages/pl-fe/src/components/status.tsx index 0a9c5fa7c..eb01a7f17 100644 --- a/packages/pl-fe/src/components/status.tsx +++ b/packages/pl-fe/src/components/status.tsx @@ -8,12 +8,17 @@ import { mentionCompose, replyCompose } from 'pl-fe/actions/compose'; import { toggleFavourite, toggleReblog } from 'pl-fe/actions/interactions'; import { toggleStatusMediaHidden, unfilterStatus } from 'pl-fe/actions/statuses'; import TranslateButton from 'pl-fe/components/translate-button'; +import Card from 'pl-fe/components/ui/card'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; import AccountContainer from 'pl-fe/containers/account-container'; import StatusTypeIcon from 'pl-fe/features/status/components/status-type-icon'; import QuotedStatus from 'pl-fe/features/status/containers/quoted-status-container'; import { HotKeys } from 'pl-fe/features/ui/components/hotkeys'; -import { useAppDispatch, useSettings } from 'pl-fe/hooks'; -import { useModalsStore } from 'pl-fe/stores'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useSettings } from 'pl-fe/hooks/useSettings'; +import { useModalsStore } from 'pl-fe/stores/modals'; import { textForScreenReader } from 'pl-fe/utils/status'; import EventPreview from './event-preview'; @@ -25,7 +30,6 @@ import StatusReactionsBar from './status-reactions-bar'; import StatusReplyMentions from './status-reply-mentions'; import SensitiveContentOverlay from './statuses/sensitive-content-overlay'; import StatusInfo from './statuses/status-info'; -import { Card, Icon, Stack, Text } from './ui'; import type { SelectedStatus } from 'pl-fe/selectors'; diff --git a/packages/pl-fe/src/components/statuses/sensitive-content-overlay.test.tsx b/packages/pl-fe/src/components/statuses/sensitive-content-overlay.test.tsx index 1f24bb8ec..9d1542459 100644 --- a/packages/pl-fe/src/components/statuses/sensitive-content-overlay.test.tsx +++ b/packages/pl-fe/src/components/statuses/sensitive-content-overlay.test.tsx @@ -2,7 +2,7 @@ import { Map as ImmutableMap } from 'immutable'; import React from 'react'; import { fireEvent, render, rootState, screen } from 'pl-fe/jest/test-helpers'; -import { normalizeStatus } from 'pl-fe/normalizers'; +import { normalizeStatus } from 'pl-fe/normalizers/status'; import { ReducerStatus } from 'pl-fe/reducers/statuses'; import SensitiveContentOverlay from './sensitive-content-overlay'; diff --git a/packages/pl-fe/src/components/statuses/sensitive-content-overlay.tsx b/packages/pl-fe/src/components/statuses/sensitive-content-overlay.tsx index f9cd59c59..5fd218a89 100644 --- a/packages/pl-fe/src/components/statuses/sensitive-content-overlay.tsx +++ b/packages/pl-fe/src/components/statuses/sensitive-content-overlay.tsx @@ -3,11 +3,13 @@ import React from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { hideStatusMedia, revealStatusMedia } from 'pl-fe/actions/statuses'; -import { useAppDispatch, useSettings } from 'pl-fe/hooks'; +import Button from 'pl-fe/components/ui/button'; +import HStack from 'pl-fe/components/ui/hstack'; +import Text from 'pl-fe/components/ui/text'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useSettings } from 'pl-fe/hooks/useSettings'; -import { Button, HStack, Text } from '../ui'; - -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; const isMediaVisible = (status: Pick & { hidden?: boolean | null }, displayMedia: 'default' | 'show_all' | 'hide_all') => { let visible = !(status.sensitive || status.spoiler_text); diff --git a/packages/pl-fe/src/components/statuses/status-info.tsx b/packages/pl-fe/src/components/statuses/status-info.tsx index fd15e6393..92e100686 100644 --- a/packages/pl-fe/src/components/statuses/status-info.tsx +++ b/packages/pl-fe/src/components/statuses/status-info.tsx @@ -1,6 +1,7 @@ import React from 'react'; -import { HStack, Text } from '../ui'; +import HStack from 'pl-fe/components/ui/hstack'; +import Text from 'pl-fe/components/ui/text'; interface IStatusInfo { avatarSize: number; diff --git a/packages/pl-fe/src/components/still-image.tsx b/packages/pl-fe/src/components/still-image.tsx index e37b3d366..36850bdf7 100644 --- a/packages/pl-fe/src/components/still-image.tsx +++ b/packages/pl-fe/src/components/still-image.tsx @@ -1,7 +1,7 @@ import clsx from 'clsx'; import React, { useRef } from 'react'; -import { useSettings } from 'pl-fe/hooks'; +import { useSettings } from 'pl-fe/hooks/useSettings'; interface IStillImage { /** Image alt text. */ diff --git a/packages/pl-fe/src/components/thumb-navigation-link.tsx b/packages/pl-fe/src/components/thumb-navigation-link.tsx index fee1a6b35..22f8af635 100644 --- a/packages/pl-fe/src/components/thumb-navigation-link.tsx +++ b/packages/pl-fe/src/components/thumb-navigation-link.tsx @@ -3,8 +3,8 @@ import React from 'react'; import { NavLink, useLocation } from 'react-router-dom'; import IconWithCounter from 'pl-fe/components/icon-with-counter'; -import { Icon } from 'pl-fe/components/ui'; -import { useSettings } from 'pl-fe/hooks'; +import Icon from 'pl-fe/components/ui/icon'; +import { useSettings } from 'pl-fe/hooks/useSettings'; interface IThumbNavigationLink { count?: number; diff --git a/packages/pl-fe/src/components/thumb-navigation.tsx b/packages/pl-fe/src/components/thumb-navigation.tsx index 819d27498..adfca8316 100644 --- a/packages/pl-fe/src/components/thumb-navigation.tsx +++ b/packages/pl-fe/src/components/thumb-navigation.tsx @@ -4,14 +4,17 @@ import { useRouteMatch } from 'react-router-dom'; import { groupComposeModal } from 'pl-fe/actions/compose'; import ThumbNavigationLink from 'pl-fe/components/thumb-navigation-link'; +import Icon from 'pl-fe/components/ui/icon'; import { useStatContext } from 'pl-fe/contexts/stat-context'; import { Entities } from 'pl-fe/entity-store/entities'; -import { useAppDispatch, useAppSelector, useFeatures, useOwnAccount } from 'pl-fe/hooks'; -import { useModalsStore, useUiStore } from 'pl-fe/stores'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useOwnAccount } from 'pl-fe/hooks/useOwnAccount'; +import { useModalsStore } from 'pl-fe/stores/modals'; +import { useUiStore } from 'pl-fe/stores/ui'; import { isStandalone } from 'pl-fe/utils/state'; -import { Icon } from './ui'; - const messages = defineMessages({ home: { id: 'navigation.home', defaultMessage: 'Home' }, search: { id: 'navigation.search', defaultMessage: 'Search' }, diff --git a/packages/pl-fe/src/components/tombstone.tsx b/packages/pl-fe/src/components/tombstone.tsx index 1faab33da..d9078a476 100644 --- a/packages/pl-fe/src/components/tombstone.tsx +++ b/packages/pl-fe/src/components/tombstone.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { FormattedMessage } from 'react-intl'; -import { Text } from 'pl-fe/components/ui'; +import Text from 'pl-fe/components/ui/text'; import { HotKeys } from 'pl-fe/features/ui/components/hotkeys'; interface ITombstone { diff --git a/packages/pl-fe/src/components/translate-button.tsx b/packages/pl-fe/src/components/translate-button.tsx index 6db9c44aa..88ce922f7 100644 --- a/packages/pl-fe/src/components/translate-button.tsx +++ b/packages/pl-fe/src/components/translate-button.tsx @@ -2,12 +2,18 @@ import React, { useEffect } from 'react'; import { FormattedMessage, useIntl } from 'react-intl'; import { translateStatus, undoStatusTranslation } from 'pl-fe/actions/statuses'; -import { useTranslationLanguages } from 'pl-fe/api/hooks'; -import { useAppDispatch, useAppSelector, useFeatures, useInstance, useSettings } from 'pl-fe/hooks'; +import { useTranslationLanguages } from 'pl-fe/api/hooks/instance/useTranslationLanguages'; +import HStack from 'pl-fe/components/ui/hstack'; +import Icon from 'pl-fe/components/ui/icon'; +import Stack from 'pl-fe/components/ui/stack'; +import Text from 'pl-fe/components/ui/text'; +import { useAppDispatch } from 'pl-fe/hooks/useAppDispatch'; +import { useAppSelector } from 'pl-fe/hooks/useAppSelector'; +import { useFeatures } from 'pl-fe/hooks/useFeatures'; +import { useInstance } from 'pl-fe/hooks/useInstance'; +import { useSettings } from 'pl-fe/hooks/useSettings'; -import { HStack, Icon, Stack, Text } from './ui'; - -import type { Status } from 'pl-fe/normalizers'; +import type { Status } from 'pl-fe/normalizers/status'; interface ITranslateButton { status: Pick; diff --git a/packages/pl-fe/src/components/trending-link.tsx b/packages/pl-fe/src/components/trending-link.tsx index 71a83bb58..40a276482 100644 --- a/packages/pl-fe/src/components/trending-link.tsx +++ b/packages/pl-fe/src/components/trending-link.tsx @@ -5,7 +5,10 @@ import { getTextDirection } from 'pl-fe/utils/rtl'; import Blurhash from './blurhash'; import { accountsCountRenderer } from './hashtag'; -import { HStack, Icon, Stack, Text } from './ui'; +import HStack from './ui/hstack'; +import Icon from './ui/icon'; +import Stack from './ui/stack'; +import Text from './ui/text'; interface ITrendingLink { trendingLink: TrendsLink; diff --git a/packages/pl-fe/src/components/ui/accordion/accordion.tsx b/packages/pl-fe/src/components/ui/accordion.tsx similarity index 96% rename from packages/pl-fe/src/components/ui/accordion/accordion.tsx rename to packages/pl-fe/src/components/ui/accordion.tsx index 3cb98101f..069b96cbf 100644 --- a/packages/pl-fe/src/components/ui/accordion/accordion.tsx +++ b/packages/pl-fe/src/components/ui/accordion.tsx @@ -4,9 +4,9 @@ import { defineMessages, useIntl } from 'react-intl'; import DropdownMenu from 'pl-fe/components/dropdown-menu'; -import HStack from '../hstack/hstack'; -import Icon from '../icon/icon'; -import Text from '../text/text'; +import HStack from './hstack'; +import Icon from './icon'; +import Text from './text'; import type { Menu } from 'pl-fe/components/dropdown-menu'; diff --git a/packages/pl-fe/src/components/ui/avatar/avatar.test.tsx b/packages/pl-fe/src/components/ui/avatar.test.tsx similarity index 100% rename from packages/pl-fe/src/components/ui/avatar/avatar.test.tsx rename to packages/pl-fe/src/components/ui/avatar.test.tsx diff --git a/packages/pl-fe/src/components/ui/avatar/avatar.tsx b/packages/pl-fe/src/components/ui/avatar.tsx similarity index 97% rename from packages/pl-fe/src/components/ui/avatar/avatar.tsx rename to packages/pl-fe/src/components/ui/avatar.tsx index 8f02060a8..c18f45bf6 100644 --- a/packages/pl-fe/src/components/ui/avatar/avatar.tsx +++ b/packages/pl-fe/src/components/ui/avatar.tsx @@ -4,7 +4,7 @@ import { defineMessages, useIntl } from 'react-intl'; import StillImage, { IStillImage } from 'pl-fe/components/still-image'; -import Icon from '../icon/icon'; +import Icon from './icon'; const AVATAR_SIZE = 42; diff --git a/packages/pl-fe/src/components/ui/banner/banner.tsx b/packages/pl-fe/src/components/ui/banner.tsx similarity index 100% rename from packages/pl-fe/src/components/ui/banner/banner.tsx rename to packages/pl-fe/src/components/ui/banner.tsx diff --git a/packages/pl-fe/src/components/ui/button/button.test.tsx b/packages/pl-fe/src/components/ui/button/index.test.tsx similarity index 98% rename from packages/pl-fe/src/components/ui/button/button.test.tsx rename to packages/pl-fe/src/components/ui/button/index.test.tsx index f2335cb68..6e74963ce 100644 --- a/packages/pl-fe/src/components/ui/button/button.test.tsx +++ b/packages/pl-fe/src/components/ui/button/index.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { fireEvent, render, screen } from 'pl-fe/jest/test-helpers'; -import Button from './button'; +import Button from '.'; describe('