refactored-folder-structure+imports-alias

This commit is contained in:
Untone 2024-07-04 10:51:15 +03:00
parent e5950417ea
commit 8b773e5fed
173 changed files with 546 additions and 717 deletions

View File

@ -1,66 +0,0 @@
@startuml
actor User
participant Browser
participant Vercel
participant article.page.server.ts
participant Solid
participant Store
User -> Browser: discours.io
activate Browser
Browser -> Vercel: GET <slug>
activate Vercel
Vercel -> article.page.server.ts: render
activate article.page.server.ts
article.page.server.ts -> apiClient: getArticle({ slug })
activate apiClient
apiClient -> DB: query: articleBySlug
activate DB
DB --> apiClient: response
deactivate DB
apiClient --> article.page.server.ts: article data
deactivate apiClient
article.page.server.ts -> Solid: render <ArticlePage article={article} />
activate Solid
Solid -> Store: useCurrentArticleStore(article)
activate Store
Store -> Store: create store with initial data (server)
Store --> Solid: currentArticle
deactivate Store
Solid -> Solid: render component
Solid --> article.page.server.ts: rendered component
deactivate Solid
article.page.server.ts --> Vercel: rendered page
Vercel -> Vercel: save rendered page to CDN
deactivate article.page.server.ts
Vercel --> Browser: rendered page
deactivate Vercel
Browser --> User: rendered page
deactivate Browser
Browser -> Browser: load client scripts
Browser -> Solid: render <ArticlePage article={article} />
Solid -> Store: useCurrentArticleStore(article)
activate Store
Store -> Store: create store with initial data (client)
Store --> Solid: currentArticle
deactivate Store
Solid -> Solid: render component (no changes)
Solid -> Solid: onMount
Solid -> Store: loadArticleComments
activate Store
Store -> apiClient: getArticleComments
activate apiClient
apiClient -> DB: query: getReactions
activate DB
DB --> apiClient: response
deactivate DB
apiClient --> Store: comments data
deactivate apiClient
Store -> Store: update store
Store --> Solid: store updated
deactivate Store
Solid -> Solid: render comments
Solid --> Browser: rendered comments
Browser --> User: comments
@enduml

View File

@ -1,40 +0,0 @@
@startuml
actor User
participant Browser
participant Server
User -> Browser: discours.io
activate Browser
Browser -> Server: GET\nquery { lng }\ncookies { lng }
opt lng in query
Server -> Server: lng = lng from query
else no lng in query
opt lng in cookies
Server -> Server: lng = lng from cookies
else no lng in cookies
Server -> Server: lng = 'ru'
end opt
end opt
note right
_dafault.page.server.ts render
end note
opt i18next is not initialized
Server -> Server: initialize i18next with lng
else i18next not initialized
Server -> Server: change i18next language to lng
end opt
note right
all resources loaded synchronously
end note
Server --> Browser: pageContext { lng }
Browser -> Browser: init client side i18next with http backend
activate Browser
Browser -> Server: get translations for current language
Server --> Browser: translations JSON
deactivate Browser
Browser -> Browser: render page
Browser --> User: rendered page
deactivate Browser
@enduml

View File

@ -1,24 +0,0 @@
@startuml
actor User
participant Browser
participant Server
User -> Browser: discours.io
activate Browser
Browser -> Server: GET
activate Server
Server -> Server: resolve route
note right
based on routes from
*.page.route.ts files
end note
Server -> Server: some.page.server.ts onBeforeRender
Server -> Server: _default.page.server.tsx render
Server --> Browser: pageContent
deactivate Server
Browser -> Browser: _default.page.client.tsx render(pageContext)
Browser --> User: rendered page
deactivate Browser
@enduml

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createSignal } from 'solid-js' import { Show, createSignal } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { Image } from '~/components/_shared/Image'
import { Topic } from '~/graphql/schema/core.gen'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import { Topic } from '../../../graphql/schema/core.gen'
import { CardTopic } from '../../Feed/CardTopic' import { CardTopic } from '../../Feed/CardTopic'
import { Icon } from '../../_shared/Icon'
import { Image } from '../../_shared/Image'
import styles from './AudioHeader.module.scss' import styles from './AudioHeader.module.scss'

View File

@ -1,7 +1,7 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createSignal } from 'solid-js' import { Show, createSignal } from 'solid-js'
import { useOutsideClickHandler } from '../../../utils/useOutsideClickHandler' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { useOutsideClickHandler } from '~/utils/useOutsideClickHandler'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import styles from './AudioPlayer.module.scss' import styles from './AudioPlayer.module.scss'

View File

@ -1,16 +1,16 @@
import { For, Show, createSignal, lazy } from 'solid-js' import { For, Show, createSignal, lazy } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { Popover } from '~/components/_shared/Popover'
import { useLocalize } from '~/context/localize'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import { useLocalize } from '../../../context/localize' import { getDescription } from '~/utils/meta'
import { getDescription } from '../../../utils/meta'
import { Icon } from '../../_shared/Icon'
import { Popover } from '../../_shared/Popover'
import { SharePopup, getShareUrl } from '../SharePopup' import { SharePopup, getShareUrl } from '../SharePopup'
import styles from './AudioPlayer.module.scss' import styles from './AudioPlayer.module.scss'
const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor')) const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor'))
const GrowingTextarea = lazy(() => import('../../_shared/GrowingTextarea/GrowingTextarea')) const GrowingTextarea = lazy(() => import('~/components/_shared/GrowingTextarea/GrowingTextarea'))
type Props = { type Props = {
media: MediaItem[] media: MediaItem[]

View File

@ -1,23 +1,23 @@
import { A } from '@solidjs/router' import { A } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, Suspense, createMemo, createSignal, lazy } from 'solid-js' import { For, Show, Suspense, createMemo, createSignal, lazy } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { ShowIfAuthenticated } from '~/components/_shared/ShowIfAuthenticated'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import { useReactions } from '~/context/reactions'
import { useSession } from '~/context/session'
import { useSnackbar, useUI } from '~/context/ui' import { useSnackbar, useUI } from '~/context/ui'
import deleteReactionMutation from '~/graphql/mutation/core/reaction-destroy' import deleteReactionMutation from '~/graphql/mutation/core/reaction-destroy'
import { useLocalize } from '../../../context/localize'
import { useReactions } from '../../../context/reactions'
import { useSession } from '../../../context/session'
import { import {
Author, Author,
MutationCreate_ReactionArgs, MutationCreate_ReactionArgs,
MutationUpdate_ReactionArgs, MutationUpdate_ReactionArgs,
Reaction, Reaction,
ReactionKind ReactionKind
} from '../../../graphql/schema/core.gen' } from '~/graphql/schema/core.gen'
import { AuthorLink } from '../../Author/AuthorLink' import { AuthorLink } from '../../Author/AuthorLink'
import { Userpic } from '../../Author/Userpic' import { Userpic } from '../../Author/Userpic'
import { Icon } from '../../_shared/Icon'
import { ShowIfAuthenticated } from '../../_shared/ShowIfAuthenticated'
import { CommentDate } from '../CommentDate' import { CommentDate } from '../CommentDate'
import { CommentRatingControl } from '../CommentRatingControl' import { CommentRatingControl } from '../CommentRatingControl'
import styles from './Comment.module.scss' import styles from './Comment.module.scss'

View File

@ -1,8 +1,8 @@
import type { Reaction } from '../../../graphql/schema/core.gen' import type { Reaction } from '~/graphql/schema/core.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import styles from './CommentDate.module.scss' import styles from './CommentDate.module.scss'

View File

@ -2,11 +2,11 @@ import { clsx } from 'clsx'
import { createMemo } from 'solid-js' import { createMemo } from 'solid-js'
import { useFeed } from '~/context/feed' import { useFeed } from '~/context/feed'
import { useLocalize } from '~/context/localize'
import { useReactions } from '~/context/reactions'
import { useSession } from '~/context/session'
import { useSnackbar } from '~/context/ui' import { useSnackbar } from '~/context/ui'
import { useLocalize } from '../../context/localize' import { Reaction, ReactionKind } from '~/graphql/schema/core.gen'
import { useReactions } from '../../context/reactions'
import { useSession } from '../../context/session'
import { Reaction, ReactionKind } from '../../graphql/schema/core.gen'
import { Popup } from '../_shared/Popup' import { Popup } from '../_shared/Popup'
import { VotersList } from '../_shared/VotersList' import { VotersList } from '../_shared/VotersList'

View File

@ -1,18 +1,18 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createMemo, createSignal, lazy, onMount } from 'solid-js' import { For, Show, createMemo, createSignal, lazy, onMount } from 'solid-js'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { useReactions } from '../../context/reactions' import { useReactions } from '~/context/reactions'
import { useSession } from '../../context/session' import { useSession } from '~/context/session'
import { Author, Reaction, ReactionKind, ReactionSort } from '../../graphql/schema/core.gen' import { Author, Reaction, ReactionKind, ReactionSort } from '~/graphql/schema/core.gen'
import { byCreated, byStat } from '../../utils/sortby' import { byCreated, byStat } from '~/utils/sortby'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
import { ShowIfAuthenticated } from '../_shared/ShowIfAuthenticated' import { ShowIfAuthenticated } from '../_shared/ShowIfAuthenticated'
import { Comment } from './Comment' import { Comment } from './Comment'
import { SortFunction } from '~/context/authors' import { SortFunction } from '~/context/authors'
import { useFeed } from '../../context/feed' import { useFeed } from '~/context/feed'
import styles from './Article.module.scss' import styles from './Article.module.scss'
const SimplifiedEditor = lazy(() => import('../Editor/SimplifiedEditor')) const SimplifiedEditor = lazy(() => import('../Editor/SimplifiedEditor'))

View File

@ -5,16 +5,16 @@ import { For, Show, createEffect, createMemo, createSignal, on, onCleanup, onMou
import { isServer } from 'solid-js/web' import { isServer } from 'solid-js/web'
import { Link, Meta } from '@solidjs/meta' import { Link, Meta } from '@solidjs/meta'
import { useLocalize } from '~/context/localize'
import { useReactions } from '~/context/reactions'
import { useSession } from '~/context/session'
import { DEFAULT_HEADER_OFFSET, useUI } from '~/context/ui' import { DEFAULT_HEADER_OFFSET, useUI } from '~/context/ui'
import type { Author, Maybe, Shout, Topic } from '~/graphql/schema/core.gen'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import { useLocalize } from '../../context/localize' import { capitalize } from '~/utils/capitalize'
import { useReactions } from '../../context/reactions' import { getImageUrl, getOpenGraphImageUrl } from '~/utils/getImageUrl'
import { useSession } from '../../context/session' import { getDescription, getKeywords } from '~/utils/meta'
import type { Author, Maybe, Shout, Topic } from '../../graphql/schema/core.gen' import { isCyrillic } from '~/utils/translate'
import { capitalize } from '../../utils/capitalize'
import { getImageUrl, getOpenGraphImageUrl } from '../../utils/getImageUrl'
import { getDescription, getKeywords } from '../../utils/meta'
import { isCyrillic } from '../../utils/translate'
import { AuthorBadge } from '../Author/AuthorBadge' import { AuthorBadge } from '../Author/AuthorBadge'
import { CardTopic } from '../Feed/CardTopic' import { CardTopic } from '../Feed/CardTopic'
import { FeedArticlePopup } from '../Feed/FeedArticlePopup' import { FeedArticlePopup } from '../Feed/FeedArticlePopup'

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createMemo, createSignal } from 'solid-js' import { Show, createMemo, createSignal } from 'solid-js'
import { useFeed } from '~/context/feed' import { useFeed } from '~/context/feed'
import { useLocalize } from '~/context/localize'
import { useReactions } from '~/context/reactions'
import { useSession } from '~/context/session'
import type { Author } from '~/graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../context/localize' import { ReactionKind, Shout } from '~/graphql/schema/core.gen'
import { useReactions } from '../../context/reactions'
import { useSession } from '../../context/session'
import { ReactionKind, Shout } from '../../graphql/schema/core.gen'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import { Popup } from '../_shared/Popup' import { Popup } from '../_shared/Popup'
import { VotersList } from '../_shared/VotersList' import { VotersList } from '../_shared/VotersList'

View File

@ -1,7 +1,7 @@
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'
import { JSX, Show, createEffect, createMemo, on } from 'solid-js' import { JSX, Show, createEffect, createMemo, on } from 'solid-js'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useSession } from '../../context/session'
type Props = { type Props = {
children: JSX.Element children: JSX.Element

View File

@ -2,18 +2,18 @@ import { clsx } from 'clsx'
import { Match, Show, Switch, createEffect, createMemo, createSignal, on } from 'solid-js' import { Match, Show, Switch, createEffect, createMemo, createSignal, on } from 'solid-js'
import { useNavigate, useSearchParams } from '@solidjs/router' import { useNavigate, useSearchParams } from '@solidjs/router'
import { Button } from '~/components/_shared/Button'
import { CheckButton } from '~/components/_shared/CheckButton'
import { ConditionalWrapper } from '~/components/_shared/ConditionalWrapper'
import { FollowingButton } from '~/components/_shared/FollowingButton'
import { Icon } from '~/components/_shared/Icon'
import { useFollowing } from '~/context/following'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { Author, FollowingEntity } from '~/graphql/schema/core.gen'
import { mediaMatches } from '~/utils/media-query' import { mediaMatches } from '~/utils/media-query'
import { useFollowing } from '../../../context/following' import { translit } from '~/utils/ru2en'
import { useLocalize } from '../../../context/localize' import { isCyrillic } from '~/utils/translate'
import { useSession } from '../../../context/session'
import { Author, FollowingEntity } from '../../../graphql/schema/core.gen'
import { translit } from '../../../utils/ru2en'
import { isCyrillic } from '../../../utils/translate'
import { Button } from '../../_shared/Button'
import { CheckButton } from '../../_shared/CheckButton'
import { ConditionalWrapper } from '../../_shared/ConditionalWrapper'
import { FollowingButton } from '../../_shared/FollowingButton'
import { Icon } from '../../_shared/Icon'
import { Userpic } from '../Userpic' import { Userpic } from '../Userpic'
import styles from './AuthorBadge.module.scss' import styles from './AuthorBadge.module.scss'

View File

@ -1,25 +1,25 @@
import type { Author, Community } from '../../../graphql/schema/core.gen' import type { Author, Community } from '~/graphql/schema/core.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createEffect, createMemo, createSignal, onMount } from 'solid-js' import { For, Show, createEffect, createMemo, createSignal, onMount } from 'solid-js'
import { FollowsFilter, useFollowing } from '../../../context/following' import { Button } from '~/components/_shared/Button'
import { useLocalize } from '../../../context/localize' import { FollowingCounters } from '~/components/_shared/FollowingCounters/FollowingCounters'
import { useSession } from '../../../context/session' import { ShowOnlyOnClient } from '~/components/_shared/ShowOnlyOnClient'
import { FollowingEntity, Topic } from '../../../graphql/schema/core.gen' import { FollowsFilter, useFollowing } from '~/context/following'
import { isAuthor } from '../../../utils/isAuthor' import { useLocalize } from '~/context/localize'
import { translit } from '../../../utils/ru2en' import { useSession } from '~/context/session'
import { isCyrillic } from '../../../utils/translate' import { FollowingEntity, Topic } from '~/graphql/schema/core.gen'
import { isAuthor } from '~/utils/isAuthor'
import { translit } from '~/utils/ru2en'
import { isCyrillic } from '~/utils/translate'
import { SharePopup, getShareUrl } from '../../Article/SharePopup' import { SharePopup, getShareUrl } from '../../Article/SharePopup'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { TopicBadge } from '../../Topic/TopicBadge' import { TopicBadge } from '../../Topic/TopicBadge'
import { Button } from '../../_shared/Button'
import { FollowingCounters } from '../../_shared/FollowingCounters/FollowingCounters'
import { ShowOnlyOnClient } from '../../_shared/ShowOnlyOnClient'
import { AuthorBadge } from '../AuthorBadge' import { AuthorBadge } from '../AuthorBadge'
import { Userpic } from '../Userpic' import { Userpic } from '../Userpic'
import { useNavigate, useSearchParams } from '@solidjs/router' import { useNavigate, useSearchParams } from '@solidjs/router'
import stylesButton from '../../_shared/Button/Button.module.scss' import stylesButton from '~/components/_shared/Button/Button.module.scss'
import styles from './AuthorCard.module.scss' import styles from './AuthorCard.module.scss'
type Props = { type Props = {

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { createMemo } from 'solid-js' import { createMemo } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import { Author } from '../../../graphql/schema/core.gen' import { Author } from '~/graphql/schema/core.gen'
import { capitalize } from '../../../utils/capitalize' import { capitalize } from '~/utils/capitalize'
import { translit } from '../../../utils/ru2en' import { translit } from '~/utils/ru2en'
import { isCyrillic } from '../../../utils/translate' import { isCyrillic } from '~/utils/translate'
import { Userpic } from '../Userpic' import { Userpic } from '../Userpic'
import styles from './AhtorLink.module.scss' import styles from './AhtorLink.module.scss'

View File

@ -1,4 +1,4 @@
import type { Author } from '../../graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createSignal } from 'solid-js' import { Show, createSignal } from 'solid-js'

View File

@ -1,4 +1,4 @@
import type { Author } from '../../graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { createMemo } from 'solid-js' import { createMemo } from 'solid-js'

View File

@ -1,9 +1,9 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createMemo } from 'solid-js' import { Show, createMemo } from 'solid-js'
import { ConditionalWrapper } from '../../_shared/ConditionalWrapper' import { ConditionalWrapper } from '~/components/_shared/ConditionalWrapper'
import { Image } from '../../_shared/Image' import { Image } from '~/components/_shared/Image'
import { Loading } from '../../_shared/Loading' import { Loading } from '~/components/_shared/Loading'
import styles from './Userpic.module.scss' import styles from './Userpic.module.scss'

View File

@ -2,9 +2,9 @@ import { clsx } from 'clsx'
import { For, Show, createEffect, createSignal, on } from 'solid-js' import { For, Show, createEffect, createSignal, on } from 'solid-js'
import { useAuthors } from '~/context/authors' import { useAuthors } from '~/context/authors'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import loadAuthorsByQuery from '~/graphql/query/core/authors-load-by' import loadAuthorsByQuery from '~/graphql/query/core/authors-load-by'
import { Author } from '~/graphql/schema/core.gen' import { Author } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../context/localize'
import { AuthorBadge } from '../Author/AuthorBadge' import { AuthorBadge } from '../Author/AuthorBadge'
import { InlineLoader } from '../InlineLoader' import { InlineLoader } from '../InlineLoader'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'

View File

@ -1,7 +1,7 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../context/localize'
import { Image } from '../_shared/Image' import { Image } from '../_shared/Image'
import styles from './Banner.module.scss' import styles from './Banner.module.scss'

View File

@ -1,8 +1,8 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { createSignal, onMount } from 'solid-js' import { createSignal, onMount } from 'solid-js'
import { useLocalize } from '~/context/localize'
import { useSnackbar, useUI } from '~/context/ui' import { useSnackbar, useUI } from '~/context/ui'
import { useLocalize } from '../../context/localize'
import styles from './Donate.module.scss' import styles from './Donate.module.scss'

View File

@ -1,5 +1,5 @@
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../context/localize'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
export const Feedback = () => { export const Feedback = () => {

View File

@ -1,6 +1,6 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, createSignal, onMount } from 'solid-js' import { For, createSignal, onMount } from 'solid-js'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import { Newsletter } from '../_shared/Newsletter' import { Newsletter } from '../_shared/Newsletter'
import styles from './Footer.module.scss' import styles from './Footer.module.scss'

View File

@ -1,5 +1,5 @@
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../context/localize'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'
import styles from './Hero.module.scss' import styles from './Hero.module.scss'

View File

@ -1,8 +1,8 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '~/context/localize'
import { useSnackbar, useUI } from '~/context/ui' import { useSnackbar, useUI } from '~/context/ui'
import { useLocalize } from '../../context/localize' import type { Shout } from '~/graphql/schema/core.gen'
import type { Shout } from '../../graphql/schema/core.gen'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import { A } from '@solidjs/router' import { A } from '@solidjs/router'

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show } from 'solid-js' import { Show } from 'solid-js'
import { DropArea } from '~/components/_shared/DropArea'
import { useLocalize } from '~/context/localize'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import { useLocalize } from '../../../context/localize' import { composeMediaItems } from '~/utils/composeMediaItems'
import { composeMediaItems } from '../../../utils/composeMediaItems'
import { AudioPlayer } from '../../Article/AudioPlayer' import { AudioPlayer } from '../../Article/AudioPlayer'
import { DropArea } from '../../_shared/DropArea'
// import { Buffer } from 'node:buffer' // import { Buffer } from 'node:buffer'
import styles from './AudioUploader.module.scss' import styles from './AudioUploader.module.scss'

View File

@ -1,8 +1,6 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Loading } from '~/components/_shared/Loading'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import { Loading } from '../../_shared/Loading'
import styles from './AutoSaveNotice.module.scss' import styles from './AutoSaveNotice.module.scss'
type Props = { type Props = {

View File

@ -1,8 +1,8 @@
import type { Editor } from '@tiptap/core' import type { Editor } from '@tiptap/core'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { Popover } from '~/components/_shared/Popover'
import { Popover } from '../../_shared/Popover' import { useLocalize } from '~/context/localize'
import styles from './BubbleMenu.module.scss' import styles from './BubbleMenu.module.scss'

View File

@ -1,11 +1,11 @@
import type { Editor } from '@tiptap/core' import type { Editor } from '@tiptap/core'
import { Icon } from '~/components/_shared/Icon'
import { Popover } from '~/components/_shared/Popover'
import { useLocalize } from '~/context/localize'
import { UploadedFile } from '~/types/upload' import { UploadedFile } from '~/types/upload'
import { useLocalize } from '../../../context/localize' import { renderUploadedImage } from '~/utils/renderUploadedImage'
import { renderUploadedImage } from '../../../utils/renderUploadedImage'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { Icon } from '../../_shared/Icon'
import { Popover } from '../../_shared/Popover'
import { UploadModalContent } from '../UploadModalContent' import { UploadModalContent } from '../UploadModalContent'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'

View File

@ -3,8 +3,8 @@ import type { Editor } from '@tiptap/core'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createSignal } from 'solid-js' import { For, Show, createSignal } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { useLocalize } from '~/context/localize'
import styles from './BubbleMenu.module.scss' import styles from './BubbleMenu.module.scss'

View File

@ -30,11 +30,11 @@ import { createTiptapEditor, useEditorHTML } from 'solid-tiptap'
import uniqolor from 'uniqolor' import uniqolor from 'uniqolor'
import { Doc } from 'yjs' import { Doc } from 'yjs'
import { useEditorContext } from '~/context/editor'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useSnackbar } from '~/context/ui' import { useSnackbar } from '~/context/ui'
import { useEditorContext } from '../../context/editor' import { handleImageUpload } from '~/utils/handleImageUpload'
import { useLocalize } from '../../context/localize'
import { useSession } from '../../context/session'
import { handleImageUpload } from '../../utils/handleImageUpload'
import { BlockquoteBubbleMenu, FigureBubbleMenu, IncutBubbleMenu } from './BubbleMenu' import { BlockquoteBubbleMenu, FigureBubbleMenu, IncutBubbleMenu } from './BubbleMenu'
import { EditorFloatingMenu } from './EditorFloatingMenu' import { EditorFloatingMenu } from './EditorFloatingMenu'

View File

@ -1,13 +1,13 @@
import type { Editor } from '@tiptap/core' import type { Editor } from '@tiptap/core'
import { Show, createEffect, createSignal } from 'solid-js' import { Show, createEffect, createSignal } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { UploadedFile } from '~/types/upload' import { UploadedFile } from '~/types/upload'
import { useLocalize } from '../../../context/localize' import { renderUploadedImage } from '~/utils/renderUploadedImage'
import { renderUploadedImage } from '../../../utils/renderUploadedImage' import { useOutsideClickHandler } from '~/utils/useOutsideClickHandler'
import { useOutsideClickHandler } from '../../../utils/useOutsideClickHandler'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { Icon } from '../../_shared/Icon'
import { InlineForm } from '../InlineForm' import { InlineForm } from '../InlineForm'
import { UploadModalContent } from '../UploadModalContent' import { UploadModalContent } from '../UploadModalContent'
import { Menu } from './Menu' import { Menu } from './Menu'

View File

@ -1,9 +1,9 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { createSignal, onMount } from 'solid-js' import { createSignal, onMount } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { Popover } from '~/components/_shared/Popover'
import { Popover } from '../../_shared/Popover' import { useLocalize } from '~/context/localize'
import styles from './InlineForm.module.scss' import styles from './InlineForm.module.scss'

View File

@ -1,8 +1,8 @@
import { Editor } from '@tiptap/core' import { Editor } from '@tiptap/core'
import { createEditorTransaction } from 'solid-tiptap' import { createEditorTransaction } from 'solid-tiptap'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import { validateUrl } from '../../../utils/validateUrl' import { validateUrl } from '~/utils/validateUrl'
import { InlineForm } from '../InlineForm' import { InlineForm } from '../InlineForm'
type Props = { type Props = {

View File

@ -3,14 +3,14 @@ import { Show, createSignal } from 'solid-js'
import { useEditorHTML } from 'solid-tiptap' import { useEditorHTML } from 'solid-tiptap'
import Typograf from 'typograf' import Typograf from 'typograf'
import { Button } from '~/components/_shared/Button'
import { DarkModeToggle } from '~/components/_shared/DarkModeToggle'
import { Icon } from '~/components/_shared/Icon'
import { useEditorContext } from '~/context/editor'
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useEditorContext } from '../../../context/editor' import { useEscKeyDownHandler } from '~/utils/useEscKeyDownHandler'
import { useLocalize } from '../../../context/localize' import { useOutsideClickHandler } from '~/utils/useOutsideClickHandler'
import { useEscKeyDownHandler } from '../../../utils/useEscKeyDownHandler'
import { useOutsideClickHandler } from '../../../utils/useOutsideClickHandler'
import { Button } from '../../_shared/Button'
import { DarkModeToggle } from '../../_shared/DarkModeToggle'
import { Icon } from '../../_shared/Icon'
import { A } from '@solidjs/router' import { A } from '@solidjs/router'
import styles from './Panel.module.scss' import styles from './Panel.module.scss'

View File

@ -20,9 +20,9 @@ import {
useEditorIsFocused useEditorIsFocused
} from 'solid-tiptap' } from 'solid-tiptap'
import { useEditorContext } from '~/context/editor'
import { useLocalize } from '~/context/localize'
import { UploadedFile } from '~/types/upload' import { UploadedFile } from '~/types/upload'
import { useEditorContext } from '../../context/editor'
import { useLocalize } from '../../context/localize'
import { Modal } from '../Nav/Modal' import { Modal } from '../Nav/Modal'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'

View File

@ -4,9 +4,9 @@ import { clsx } from 'clsx'
import { Match, Show, Switch, createEffect, createSignal, lazy, onCleanup, onMount } from 'solid-js' import { Match, Show, Switch, createEffect, createSignal, lazy, onCleanup, onMount } from 'solid-js'
import { createEditorTransaction } from 'solid-tiptap' import { createEditorTransaction } from 'solid-tiptap'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { Popover } from '~/components/_shared/Popover'
import { Popover } from '../../_shared/Popover' import { useLocalize } from '~/context/localize'
import { InsertLinkForm } from '../InsertLinkForm' import { InsertLinkForm } from '../InsertLinkForm'
import styles from './TextBubbleMenu.module.scss' import styles from './TextBubbleMenu.module.scss'

View File

@ -1,7 +1,7 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createSignal } from 'solid-js' import { For, Show, createSignal } from 'solid-js'
import { useLocalize } from '~/context/localize'
import type { Topic } from '~/graphql/schema/core.gen' import type { Topic } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../../context/localize'
import styles from './TopicSelect.module.scss' import styles from './TopicSelect.module.scss'
type TopicSelectProps = { type TopicSelectProps = {

View File

@ -2,15 +2,15 @@ import { UploadFile, createDropzone, createFileUploader } from '@solid-primitive
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createSignal } from 'solid-js' import { Show, createSignal } from 'solid-js'
import { Button } from '~/components/_shared/Button'
import { Icon } from '~/components/_shared/Icon'
import { Loading } from '~/components/_shared/Loading'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { UploadedFile } from '~/types/upload' import { UploadedFile } from '~/types/upload'
import { useLocalize } from '../../../context/localize' import { handleImageUpload } from '~/utils/handleImageUpload'
import { useSession } from '../../../context/session' import { verifyImg } from '~/utils/verifyImg'
import { handleImageUpload } from '../../../utils/handleImageUpload'
import { verifyImg } from '../../../utils/verifyImg'
import { Button } from '../../_shared/Button'
import { Icon } from '../../_shared/Icon'
import { Loading } from '../../_shared/Loading'
import { InlineForm } from '../InlineForm' import { InlineForm } from '../InlineForm'
import styles from './UploadModalContent.module.scss' import styles from './UploadModalContent.module.scss'

View File

@ -2,11 +2,11 @@ import { createDropzone } from '@solid-primitives/upload'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createSignal } from 'solid-js' import { For, Show, createSignal } from 'solid-js'
import { VideoPlayer } from '~/components/_shared/VideoPlayer'
import { useLocalize } from '~/context/localize'
import { useSnackbar } from '~/context/ui' import { useSnackbar } from '~/context/ui'
import { useLocalize } from '../../../context/localize' import { composeMediaItems } from '~/utils/composeMediaItems'
import { composeMediaItems } from '../../../utils/composeMediaItems' import { validateUrl } from '~/utils/validateUrl'
import { validateUrl } from '../../../utils/validateUrl'
import { VideoPlayer } from '../../_shared/VideoPlayer'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import styles from './VideoUploader.module.scss' import styles from './VideoUploader.module.scss'

View File

@ -1,19 +1,19 @@
import { A, useNavigate, useSearchParams } from '@solidjs/router' import { A, useNavigate, useSearchParams } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Accessor, For, Show, createMemo, createSignal } from 'solid-js' import { Accessor, For, Show, createMemo, createSignal } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { useSession } from '../../../context/session' import { Image } from '~/components/_shared/Image'
import type { Author, Maybe, Shout, Topic } from '../../../graphql/schema/core.gen' import { Popover } from '~/components/_shared/Popover'
import { capitalize } from '../../../utils/capitalize' import { useLocalize } from '~/context/localize'
import { getDescription } from '../../../utils/meta' import { useSession } from '~/context/session'
import type { Author, Maybe, Shout, Topic } from '~/graphql/schema/core.gen'
import { capitalize } from '~/utils/capitalize'
import { getDescription } from '~/utils/meta'
import { CoverImage } from '../../Article/CoverImage' import { CoverImage } from '../../Article/CoverImage'
import { SharePopup, getShareUrl } from '../../Article/SharePopup' import { SharePopup, getShareUrl } from '../../Article/SharePopup'
import { ShoutRatingControl } from '../../Article/ShoutRatingControl' import { ShoutRatingControl } from '../../Article/ShoutRatingControl'
import { AuthorLink } from '../../Author/AuthorLink' import { AuthorLink } from '../../Author/AuthorLink'
import stylesHeader from '../../Nav/Header/Header.module.scss' import stylesHeader from '../../Nav/Header/Header.module.scss'
import { Icon } from '../../_shared/Icon'
import { Image } from '../../_shared/Image'
import { Popover } from '../../_shared/Popover'
import { CardTopic } from '../CardTopic' import { CardTopic } from '../CardTopic'
import { FeedArticlePopup } from '../FeedArticlePopup' import { FeedArticlePopup } from '../FeedArticlePopup'
import styles from './ArticleCard.module.scss' import styles from './ArticleCard.module.scss'

View File

@ -1,10 +1,10 @@
// TODO: additional entities list column + article // TODO: additional entities list column + article
import type { Author, Shout, Topic } from '../../graphql/schema/core.gen' import type { Author, Shout, Topic } from '~/graphql/schema/core.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show } from 'solid-js' import { For, Show } from 'solid-js'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { AuthorBadge } from '../Author/AuthorBadge' import { AuthorBadge } from '../Author/AuthorBadge'
import { TopicCard } from '../Topic/Card' import { TopicCard } from '../Topic/Card'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'

View File

@ -1,12 +1,12 @@
import type { PopupProps } from '../../_shared/Popup' import type { PopupProps } from '~/components/_shared/Popup'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createSignal } from 'solid-js' import { Show, createSignal } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { Popup } from '~/components/_shared/Popup'
import { Popup } from '../../_shared/Popup' import { SoonChip } from '~/components/_shared/SoonChip'
import { SoonChip } from '../../_shared/SoonChip' import { useLocalize } from '~/context/localize'
import styles from './FeedArticlePopup.module.scss' import styles from './FeedArticlePopup.module.scss'

View File

@ -1,5 +1,5 @@
import type { JSX } from 'solid-js/jsx-runtime' import type { JSX } from 'solid-js/jsx-runtime'
import type { Shout } from '../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { For, Show } from 'solid-js' import { For, Show } from 'solid-js'

View File

@ -1,9 +1,9 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createMemo } from 'solid-js' import { For, Show, createMemo } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { useSession } from '../../../context/session' import { useLocalize } from '~/context/localize'
import { Icon } from '../../_shared/Icon' import { useSession } from '~/context/session'
import styles from './Placeholder.module.scss' import styles from './Placeholder.module.scss'
type ProfileLink = { type ProfileLink = {

View File

@ -1,4 +1,4 @@
import type { Shout } from '../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { Show } from 'solid-js' import { Show } from 'solid-js'

View File

@ -1,4 +1,4 @@
import type { Shout } from '../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { For, Show, createEffect, createSignal } from 'solid-js' import { For, Show, createEffect, createSignal } from 'solid-js'

View File

@ -1,5 +1,5 @@
import type { JSX } from 'solid-js/jsx-runtime' import type { JSX } from 'solid-js/jsx-runtime'
import type { Shout } from '../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { For, Show } from 'solid-js' import { For, Show } from 'solid-js'

View File

@ -1,4 +1,4 @@
import type { Shout } from '../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { ArticleCard } from './ArticleCard' import { ArticleCard } from './ArticleCard'

View File

@ -1,4 +1,4 @@
import type { Shout } from '../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { For } from 'solid-js' import { For } from 'solid-js'

View File

@ -2,12 +2,12 @@ import { clsx } from 'clsx'
import { For, Show, createSignal } from 'solid-js' import { For, Show, createSignal } from 'solid-js'
import { A, useMatch } from '@solidjs/router' import { A, useMatch } from '@solidjs/router'
import { Icon } from '~/components/_shared/Icon'
import { useFeed } from '~/context/feed' import { useFeed } from '~/context/feed'
import { useFollowing } from '../../../context/following' import { useFollowing } from '~/context/following'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import { Author } from '../../../graphql/schema/core.gen' import { Author } from '~/graphql/schema/core.gen'
import { Userpic } from '../../Author/Userpic' import { Userpic } from '../../Author/Userpic'
import { Icon } from '../../_shared/Icon'
import styles from './Sidebar.module.scss' import styles from './Sidebar.module.scss'
export const Sidebar = () => { export const Sidebar = () => {

View File

@ -1,9 +1,9 @@
import { For, createEffect, createSignal } from 'solid-js' import { For, createEffect, createSignal } from 'solid-js'
import { useInbox } from '~/context/inbox'
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useInbox } from '../../context/inbox' import type { Author } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../context/localize'
import type { Author } from '../../graphql/schema/core.gen'
import InviteUser from './InviteUser' import InviteUser from './InviteUser'
import styles from './CreateModalContent.module.scss' import styles from './CreateModalContent.module.scss'

View File

@ -1,7 +1,7 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createMemo } from 'solid-js' import { Show, createMemo } from 'solid-js'
import { getImageUrl } from '../../utils/getImageUrl' import { getImageUrl } from '~/utils/getImageUrl'
import './DialogCard.module.scss' import './DialogCard.module.scss'
import styles from './DialogAvatar.module.scss' import styles from './DialogAvatar.module.scss'

View File

@ -1,10 +1,10 @@
import type { ChatMember } from '../../graphql/schema/chat.gen' import type { ChatMember } from '~/graphql/schema/chat.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Match, Show, Switch, createMemo } from 'solid-js' import { Match, Show, Switch, createMemo } from 'solid-js'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Author } from '../../graphql/schema/core.gen' import { Author } from '~/graphql/schema/core.gen'
import { AuthorBadge } from '../Author/AuthorBadge' import { AuthorBadge } from '../Author/AuthorBadge'
import DialogAvatar from './DialogAvatar' import DialogAvatar from './DialogAvatar'

View File

@ -1,4 +1,4 @@
import type { Chat, ChatMember } from '../../graphql/schema/chat.gen' import type { Chat, ChatMember } from '~/graphql/schema/chat.gen'
import DialogCard from './DialogCard' import DialogCard from './DialogCard'

View File

@ -1,4 +1,4 @@
import type { ChatMember } from '../../graphql/schema/chat.gen' import type { ChatMember } from '~/graphql/schema/chat.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For } from 'solid-js' import { For } from 'solid-js'

View File

@ -1,4 +1,4 @@
import type { Author } from '../../graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'

View File

@ -1,9 +1,9 @@
import type { ChatMember, Message as MessageType } from '../../graphql/schema/chat.gen' import type { ChatMember, Message as MessageType } from '~/graphql/schema/chat.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createSignal } from 'solid-js' import { Show, createSignal } from 'solid-js'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import DialogAvatar from './DialogAvatar' import DialogAvatar from './DialogAvatar'

View File

@ -2,7 +2,7 @@ import type { PopupProps } from '../_shared/Popup'
import { For, createEffect, createSignal } from 'solid-js' import { For, createEffect, createSignal } from 'solid-js'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Popup } from '../_shared/Popup' import { Popup } from '../_shared/Popup'
export type MessageActionType = 'reply' | 'copy' | 'pin' | 'forward' | 'select' | 'delete' export type MessageActionType = 'reply' | 'copy' | 'pin' | 'forward' | 'select' | 'delete'

View File

@ -1,4 +1,4 @@
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Loading } from '../_shared/Loading' import { Loading } from '../_shared/Loading'
import styles from './InlineLoader.module.scss' import styles from './InlineLoader.module.scss'

View File

@ -1,9 +1,9 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { JSX, Show, createSignal } from 'solid-js' import { JSX, Show, createSignal } from 'solid-js'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize'
import { useSession } from '../../../context/session'
import { PasswordField } from './PasswordField' import { PasswordField } from './PasswordField'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'

View File

@ -1,9 +1,9 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createEffect, createSignal } from 'solid-js' import { Show, createEffect, createSignal } from 'solid-js'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize'
import { useSession } from '../../../context/session'
import { email, setEmail } from './sharedLogic' import { email, setEmail } from './sharedLogic'

View File

@ -1,10 +1,10 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { JSX, Show, createSignal } from 'solid-js' import { JSX, Show, createSignal } from 'solid-js'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useSnackbar, useUI } from '~/context/ui' import { useSnackbar, useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize' import { validateEmail } from '~/utils/validateEmail'
import { useSession } from '../../../context/session'
import { validateEmail } from '../../../utils/validateEmail'
import { AuthModalHeader } from './AuthModalHeader' import { AuthModalHeader } from './AuthModalHeader'
import { PasswordField } from './PasswordField' import { PasswordField } from './PasswordField'

View File

@ -3,10 +3,10 @@ import type { JSX } from 'solid-js'
import { Show, createMemo, createSignal } from 'solid-js' import { Show, createMemo, createSignal } from 'solid-js'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize' import { validateEmail } from '~/utils/validateEmail'
import { useSession } from '../../../context/session'
import { validateEmail } from '../../../utils/validateEmail'
import { AuthModalHeader } from './AuthModalHeader' import { AuthModalHeader } from './AuthModalHeader'
import { PasswordField } from './PasswordField' import { PasswordField } from './PasswordField'
import { SocialProviders } from './SocialProviders' import { SocialProviders } from './SocialProviders'

View File

@ -1,7 +1,7 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '~/context/localize'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize'
import styles from './AuthModal.module.scss' import styles from './AuthModal.module.scss'

View File

@ -1,9 +1,9 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { JSX, Show, createSignal, onMount } from 'solid-js' import { JSX, Show, createSignal, onMount } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import { useSession } from '../../../context/session' import { useSession } from '~/context/session'
import { validateEmail } from '../../../utils/validateEmail' import { validateEmail } from '~/utils/validateEmail'
import { email, setEmail } from './sharedLogic' import { email, setEmail } from './sharedLogic'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'

View File

@ -2,9 +2,9 @@ import { clsx } from 'clsx'
import { Component, Show, createEffect, createMemo } from 'solid-js' import { Component, Show, createEffect, createMemo } from 'solid-js'
import { Dynamic } from 'solid-js/web' import { Dynamic } from 'solid-js/web'
import { useLocalize } from '~/context/localize'
import { AuthModalSource, useUI } from '~/context/ui' import { AuthModalSource, useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize' import { isMobile } from '~/utils/media-query'
import { isMobile } from '../../../utils/media-query'
import { ChangePasswordForm } from './ChangePasswordForm' import { ChangePasswordForm } from './ChangePasswordForm'
import { EmailConfirm } from './EmailConfirm' import { EmailConfirm } from './EmailConfirm'
import { LoginForm } from './LoginForm' import { LoginForm } from './LoginForm'

View File

@ -1,6 +1,6 @@
import { useLocalize } from '../../../context/localize' import { Button } from '~/components/_shared/Button'
import { useUI } from '../../../context/ui' import { useLocalize } from '~/context/localize'
import { Button } from '../../_shared/Button' import { useUI } from '~/context/ui'
import styles from './ConfirmModal.module.scss' import styles from './ConfirmModal.module.scss'

View File

@ -1,16 +1,16 @@
import { A, useLocation, useNavigate, useSearchParams } from '@solidjs/router' import { A, useLocation, useNavigate, useSearchParams } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createEffect, createMemo, createSignal, onCleanup, onMount } from 'solid-js' import { For, Show, createEffect, createMemo, createSignal, onCleanup, onMount } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { Newsletter } from '~/components/_shared/Newsletter'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useTopics } from '~/context/topics'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useLocalize } from '../../../context/localize' import type { Topic } from '~/graphql/schema/core.gen'
import { useSession } from '../../../context/session' import { getRandomTopicsFromArray } from '~/utils/getRandomTopicsFromArray'
import { useTopics } from '../../../context/topics' import { getDescription } from '~/utils/meta'
import type { Topic } from '../../../graphql/schema/core.gen'
import { getRandomTopicsFromArray } from '../../../utils/getRandomTopicsFromArray'
import { getDescription } from '../../../utils/meta'
import { SharePopup, getShareUrl } from '../../Article/SharePopup' import { SharePopup, getShareUrl } from '../../Article/SharePopup'
import { Icon } from '../../_shared/Icon'
import { Newsletter } from '../../_shared/Newsletter'
import { AuthModal } from '../AuthModal' import { AuthModal } from '../AuthModal'
import { ConfirmModal } from '../ConfirmModal' import { ConfirmModal } from '../ConfirmModal'
import { HeaderAuth } from '../HeaderAuth' import { HeaderAuth } from '../HeaderAuth'

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createMemo, createSignal, onCleanup, onMount } from 'solid-js' import { Show, createMemo, createSignal, onCleanup, onMount } from 'solid-js'
import { useEditorContext } from '~/context/editor'
import { useLocalize } from '~/context/localize'
import { useNotifications } from '~/context/notifications'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import type { Author } from '~/graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import { useEditorContext } from '../../context/editor'
import { useLocalize } from '../../context/localize'
import { useNotifications } from '../../context/notifications'
import { useSession } from '../../context/session'
import { Userpic } from '../Author/Userpic' import { Userpic } from '../Author/Userpic'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'

View File

@ -1,10 +1,10 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import type { JSX } from 'solid-js' import type { JSX } from 'solid-js'
import { Show } from 'solid-js' import { Show } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { isPortrait } from '~/utils/media-query' import { isPortrait } from '~/utils/media-query'
import { useEscKeyDownHandler } from '../../../utils/useEscKeyDownHandler' import { useEscKeyDownHandler } from '~/utils/useEscKeyDownHandler'
import { Icon } from '../../_shared/Icon'
import styles from './Modal.module.scss' import styles from './Modal.module.scss'
interface Props { interface Props {

View File

@ -1,8 +1,8 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { createMemo } from 'solid-js' import { createMemo } from 'solid-js'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import type { Author } from '~/graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../context/localize'
import { useSession } from '../../context/session'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import type { PopupProps } from '../_shared/Popup' import type { PopupProps } from '../_shared/Popup'
import { Popup } from '../_shared/Popup' import { Popup } from '../_shared/Popup'

View File

@ -1,6 +1,6 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import { useLocation } from '@solidjs/router' import { useLocation } from '@solidjs/router'
import styles from './ProfileSettingsNavigation.module.scss' import styles from './ProfileSettingsNavigation.module.scss'

View File

@ -1,15 +1,15 @@
import type { Shout } from '../../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { For, Show, createResource, createSignal, onCleanup } from 'solid-js' import { For, Show, createResource, createSignal, onCleanup } from 'solid-js'
import { debounce } from 'throttle-debounce' import { debounce } from 'throttle-debounce'
import { Button } from '~/components/_shared/Button'
import { Icon } from '~/components/_shared/Icon'
import { useFeed } from '~/context/feed' import { useFeed } from '~/context/feed'
import { useLocalize } from '~/context/localize' import { useLocalize } from '~/context/localize'
import { restoreScrollPosition, saveScrollPosition } from '../../../utils/scroll' import { restoreScrollPosition, saveScrollPosition } from '~/utils/scroll'
import { byScore } from '../../../utils/sortby' import { byScore } from '~/utils/sortby'
import { FEED_PAGE_SIZE } from '../../Views/Feed/Feed' import { FEED_PAGE_SIZE } from '../../Views/Feed/Feed'
import { Button } from '../../_shared/Button'
import { Icon } from '../../_shared/Icon'
import { SearchResultItem } from './SearchResultItem' import { SearchResultItem } from './SearchResultItem'

View File

@ -1,4 +1,4 @@
import type { Shout } from '../../../graphql/schema/core.gen' import type { Shout } from '~/graphql/schema/core.gen'
import { ArticleCard } from '../../Feed/ArticleCard' import { ArticleCard } from '../../Feed/ArticleCard'

View File

@ -1,6 +1,6 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '../../../context/localize' import { Icon } from '~/components/_shared/Icon'
import { Icon } from '../../_shared/Icon' import { useLocalize } from '~/context/localize'
import { A, useMatch } from '@solidjs/router' import { A, useMatch } from '@solidjs/router'
import styles from './Topics.module.scss' import styles from './Topics.module.scss'

View File

@ -1,6 +1,6 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '../../../context/localize' import { useLocalize } from '~/context/localize'
import styles from './EmptyMessage.module.scss' import styles from './EmptyMessage.module.scss'

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show } from 'solid-js' import { For, Show } from 'solid-js'
import { useLocalize } from '../../../context/localize' import { GroupAvatar } from '~/components/_shared/GroupAvatar'
import { useNotifications } from '../../../context/notifications' import { TimeAgo } from '~/components/_shared/TimeAgo'
import { Author, NotificationGroup as Group } from '../../../graphql/schema/core.gen' import { useLocalize } from '~/context/localize'
import { GroupAvatar } from '../../_shared/GroupAvatar' import { useNotifications } from '~/context/notifications'
import { TimeAgo } from '../../_shared/TimeAgo' import { Author, NotificationGroup as Group } from '~/graphql/schema/core.gen'
import { A, useNavigate, useSearchParams } from '@solidjs/router' import { A, useNavigate, useSearchParams } from '@solidjs/router'
import styles from './NotificationView.module.scss' import styles from './NotificationView.module.scss'

View File

@ -2,11 +2,11 @@ import { clsx } from 'clsx'
import { Show, createEffect, createMemo, createSignal, on, onCleanup, onMount } from 'solid-js' import { Show, createEffect, createMemo, createSignal, on, onCleanup, onMount } from 'solid-js'
import { throttle } from 'throttle-debounce' import { throttle } from 'throttle-debounce'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { PAGE_SIZE, useNotifications } from '../../context/notifications' import { PAGE_SIZE, useNotifications } from '~/context/notifications'
import { useSession } from '../../context/session' import { useSession } from '~/context/session'
import { useEscKeyDownHandler } from '../../utils/useEscKeyDownHandler' import { useEscKeyDownHandler } from '~/utils/useEscKeyDownHandler'
import { useOutsideClickHandler } from '../../utils/useOutsideClickHandler' import { useOutsideClickHandler } from '~/utils/useOutsideClickHandler'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'

View File

@ -14,16 +14,16 @@ import {
onMount onMount
} from 'solid-js' } from 'solid-js'
import { createStore } from 'solid-js/store' import { createStore } from 'solid-js/store'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { useProfile } from '../../context/profile' import { useProfile } from '~/context/profile'
import { useSession } from '../../context/session' import { useSession } from '~/context/session'
import { useSnackbar, useUI } from '../../context/ui' import { useSnackbar, useUI } from '~/context/ui'
import { InputMaybe, ProfileInput } from '../../graphql/schema/core.gen' import { InputMaybe, ProfileInput } from '~/graphql/schema/core.gen'
import { clone } from '../../utils/clone' import { clone } from '~/utils/clone'
import { getImageUrl } from '../../utils/getImageUrl' import { getImageUrl } from '~/utils/getImageUrl'
import { handleImageUpload } from '../../utils/handleImageUpload' import { handleImageUpload } from '~/utils/handleImageUpload'
import { profileSocialLinks } from '../../utils/profileSocialLinks' import { profileSocialLinks } from '~/utils/profileSocialLinks'
import { validateUrl } from '../../utils/validateUrl' import { validateUrl } from '~/utils/validateUrl'
import { Modal } from '../Nav/Modal' import { Modal } from '../Nav/Modal'
import { ProfileSettingsNavigation } from '../Nav/ProfileSettingsNavigation' import { ProfileSettingsNavigation } from '../Nav/ProfileSettingsNavigation'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
@ -34,8 +34,8 @@ import { Popover } from '../_shared/Popover'
import { SocialNetworkInput } from '../_shared/SocialNetworkInput' import { SocialNetworkInput } from '../_shared/SocialNetworkInput'
import styles from './Settings.module.scss' import styles from './Settings.module.scss'
const SimplifiedEditor = lazy(() => import('../../components/Editor/SimplifiedEditor')) const SimplifiedEditor = lazy(() => import('~/components/Editor/SimplifiedEditor'))
const GrowingTextarea = lazy(() => import('../../components/_shared/GrowingTextarea/GrowingTextarea')) const GrowingTextarea = lazy(() => import('~/components/_shared/GrowingTextarea/GrowingTextarea'))
function filterNulls(arr: InputMaybe<string>[]): string[] { function filterNulls(arr: InputMaybe<string>[]): string[] {
return arr.filter((item): item is string => item !== null && item !== undefined) return arr.filter((item): item is string => item !== null && item !== undefined)

View File

@ -2,9 +2,9 @@ import { clsx } from 'clsx'
import { For, Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js' import { For, Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js'
import { debounce, throttle } from 'throttle-debounce' import { debounce, throttle } from 'throttle-debounce'
import { useLocalize } from '~/context/localize'
import { DEFAULT_HEADER_OFFSET } from '~/context/ui' import { DEFAULT_HEADER_OFFSET } from '~/context/ui'
import { useLocalize } from '../../context/localize' import { isDesktop } from '~/utils/media-query'
import { isDesktop } from '../../utils/media-query'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import styles from './TableOfContents.module.scss' import styles from './TableOfContents.module.scss'

View File

@ -1,11 +1,11 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createEffect, createMemo, createSignal, on } from 'solid-js' import { Show, createEffect, createMemo, createSignal, on } from 'solid-js'
import { useFollowing } from '../../context/following' import { useFollowing } from '~/context/following'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { useSession } from '../../context/session' import { useSession } from '~/context/session'
import { Author, FollowingEntity, type Topic } from '../../graphql/schema/core.gen' import { Author, FollowingEntity, type Topic } from '~/graphql/schema/core.gen'
import { capitalize } from '../../utils/capitalize' import { capitalize } from '~/utils/capitalize'
import { CardTopic } from '../Feed/CardTopic' import { CardTopic } from '../Feed/CardTopic'
import { CheckButton } from '../_shared/CheckButton' import { CheckButton } from '../_shared/CheckButton'
import { FollowingButton } from '../_shared/FollowingButton' import { FollowingButton } from '../_shared/FollowingButton'

View File

@ -1,6 +1,6 @@
import type { Topic } from '../../graphql/schema/core.gen' import type { Topic } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import './FloorHeader.scss' import './FloorHeader.scss'

View File

@ -1,12 +1,12 @@
import type { Author, Topic } from '../../graphql/schema/core.gen' import type { Author, Topic } from '~/graphql/schema/core.gen'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createEffect, createSignal } from 'solid-js' import { Show, createEffect, createSignal } from 'solid-js'
import { useFollowing } from '../../context/following' import { useFollowing } from '~/context/following'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { useSession } from '../../context/session' import { useSession } from '~/context/session'
import { FollowingEntity } from '../../graphql/schema/core.gen' import { FollowingEntity } from '~/graphql/schema/core.gen'
import { Button } from '../_shared/Button' import { Button } from '../_shared/Button'
import { FollowingCounters } from '../_shared/FollowingCounters/FollowingCounters' import { FollowingCounters } from '../_shared/FollowingCounters/FollowingCounters'

View File

@ -1,14 +1,14 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { Show, createEffect, createSignal, on } from 'solid-js' import { Show, createEffect, createSignal, on } from 'solid-js'
import { FollowingButton } from '~/components/_shared/FollowingButton'
import { useFollowing } from '~/context/following'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { FollowingEntity, Topic } from '~/graphql/schema/core.gen'
import { capitalize } from '~/utils/capitalize'
import { getImageUrl } from '~/utils/getImageUrl'
import { mediaMatches } from '~/utils/media-query' import { mediaMatches } from '~/utils/media-query'
import { useFollowing } from '../../../context/following'
import { useLocalize } from '../../../context/localize'
import { useSession } from '../../../context/session'
import { FollowingEntity, Topic } from '../../../graphql/schema/core.gen'
import { capitalize } from '../../../utils/capitalize'
import { getImageUrl } from '../../../utils/getImageUrl'
import { FollowingButton } from '../../_shared/FollowingButton'
import styles from './TopicBadge.module.scss' import styles from './TopicBadge.module.scss'
type Props = { type Props = {

View File

@ -2,18 +2,18 @@ import { Meta } from '@solidjs/meta'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createMemo, createSignal, onMount } from 'solid-js' import { For, Show, createMemo, createSignal, onMount } from 'solid-js'
import ruKeywords from '~/lib/locales/ru/keywords.json' import { Loading } from '~/components/_shared/Loading'
import enKeywords from '~/lib/locales/ru/keywords.json' import { SearchField } from '~/components/_shared/SearchField'
import enKeywords from '~/config/locales/en/keywords.json'
import ruKeywords from '~/config/locales/ru/keywords.json'
import { type SortFunction, useAuthors } from '~/context/authors'
import { useLocalize } from '~/context/localize'
import type { Author } from '~/graphql/schema/core.gen'
import { getImageUrl } from '~/utils/getImageUrl'
import { scrollHandler } from '~/utils/scroll'
import { byFirstChar, byStat } from '~/utils/sortby' import { byFirstChar, byStat } from '~/utils/sortby'
import { type SortFunction, useAuthors } from '../../../context/authors' import { authorLetterReduce, translateAuthor } from '~/utils/translate'
import { useLocalize } from '../../../context/localize'
import type { Author } from '../../../graphql/schema/core.gen'
import { getImageUrl } from '../../../utils/getImageUrl'
import { scrollHandler } from '../../../utils/scroll'
import { authorLetterReduce, translateAuthor } from '../../../utils/translate'
import { AuthorsList } from '../../AuthorsList' import { AuthorsList } from '../../AuthorsList'
import { Loading } from '../../_shared/Loading'
import { SearchField } from '../../_shared/SearchField'
import styles from './AllAuthors.module.scss' import styles from './AllAuthors.module.scss'
type Props = { type Props = {

View File

@ -2,18 +2,18 @@ import { Meta } from '@solidjs/meta'
import { A, useSearchParams } from '@solidjs/router' import { A, useSearchParams } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js'
import { Loading } from '~/components/_shared/Loading'
import { SearchField } from '~/components/_shared/SearchField'
import enKeywords from '~/config/locales/en/keywords.json'
import ruKeywords from '~/config/locales/ru/keywords.json'
import { useLocalize } from '~/context/localize'
import { useTopics } from '~/context/topics' import { useTopics } from '~/context/topics'
import ruKeywords from '~/lib/locales/ru/keywords.json' import type { Topic } from '~/graphql/schema/core.gen'
import enKeywords from '~/lib/locales/ru/keywords.json' import { capitalize } from '~/utils/capitalize'
import { useLocalize } from '../../../context/localize' import { dummyFilter } from '~/utils/dummyFilter'
import type { Topic } from '../../../graphql/schema/core.gen' import { getImageUrl } from '~/utils/getImageUrl'
import { capitalize } from '../../../utils/capitalize' import { scrollHandler } from '~/utils/scroll'
import { dummyFilter } from '../../../utils/dummyFilter'
import { getImageUrl } from '../../../utils/getImageUrl'
import { scrollHandler } from '../../../utils/scroll'
import { TopicBadge } from '../../Topic/TopicBadge' import { TopicBadge } from '../../Topic/TopicBadge'
import { Loading } from '../../_shared/Loading'
import { SearchField } from '../../_shared/SearchField'
import styles from './AllTopics.module.scss' import styles from './AllTopics.module.scss'
type Props = { type Props = {

View File

@ -2,23 +2,24 @@ import { Meta, Title } from '@solidjs/meta'
import { A, useLocation, useParams } from '@solidjs/router' import { A, useLocation, useParams } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Match, Show, Switch, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' import { For, Match, Show, Switch, createEffect, createMemo, createSignal, on, onMount } from 'solid-js'
import { Loading } from '~/components/_shared/Loading'
import { useAuthors } from '~/context/authors' import { useAuthors } from '~/context/authors'
import { useFeed } from '~/context/feed'
import { useFollowing } from '~/context/following'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useFeed } from '../../../context/feed' import loadShoutsQuery from '~/graphql/query/core/articles-load-by'
import { useFollowing } from '../../../context/following' import getAuthorFollowersQuery from '~/graphql/query/core/author-followers'
import { useLocalize } from '../../../context/localize' import getAuthorFollowsQuery from '~/graphql/query/core/author-follows'
import { useSession } from '../../../context/session' import loadReactionsBy from '~/graphql/query/core/reactions-load-by'
import loadShoutsQuery from '../../../graphql/query/core/articles-load-by' import type { Author, Reaction, Shout, Topic } from '~/graphql/schema/core.gen'
import getAuthorFollowersQuery from '../../../graphql/query/core/author-followers' import { getImageUrl } from '~/utils/getImageUrl'
import getAuthorFollowsQuery from '../../../graphql/query/core/author-follows' import { getDescription } from '~/utils/meta'
import loadReactionsBy from '../../../graphql/query/core/reactions-load-by' import { restoreScrollPosition, saveScrollPosition } from '~/utils/scroll'
import type { Author, Reaction, Shout, Topic } from '../../../graphql/schema/core.gen' import { byCreated } from '~/utils/sortby'
import { getImageUrl } from '../../../utils/getImageUrl' import { splitToPages } from '~/utils/splitToPages'
import { getDescription } from '../../../utils/meta'
import { restoreScrollPosition, saveScrollPosition } from '../../../utils/scroll'
import { byCreated } from '../../../utils/sortby'
import { splitToPages } from '../../../utils/splitToPages'
import stylesArticle from '../../Article/Article.module.scss' import stylesArticle from '../../Article/Article.module.scss'
import { Comment } from '../../Article/Comment' import { Comment } from '../../Article/Comment'
import { AuthorCard } from '../../Author/AuthorCard' import { AuthorCard } from '../../Author/AuthorCard'
@ -27,7 +28,6 @@ import { Placeholder } from '../../Feed/Placeholder'
import { Row1 } from '../../Feed/Row1' import { Row1 } from '../../Feed/Row1'
import { Row2 } from '../../Feed/Row2' import { Row2 } from '../../Feed/Row2'
import { Row3 } from '../../Feed/Row3' import { Row3 } from '../../Feed/Row3'
import { Loading } from '../../_shared/Loading'
import styles from './Author.module.scss' import styles from './Author.module.scss'
type Props = { type Props = {

View File

@ -3,19 +3,19 @@ import deepEqual from 'fast-deep-equal'
import { Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js' import { Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js'
import { createStore } from 'solid-js/store' import { createStore } from 'solid-js/store'
import { debounce } from 'throttle-debounce' import { debounce } from 'throttle-debounce'
import { Icon } from '~/components/_shared/Icon'
import { InviteMembers } from '~/components/_shared/InviteMembers'
import { ShoutForm, useEditorContext } from '~/context/editor'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import getMyShoutQuery from '~/graphql/query/core/article-my' import getMyShoutQuery from '~/graphql/query/core/article-my'
import { ShoutForm, useEditorContext } from '../../../context/editor' import type { Shout, Topic } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../../context/localize' import { clone } from '~/utils/clone'
import type { Shout, Topic } from '../../../graphql/schema/core.gen' import { isDesktop } from '~/utils/media-query'
import { clone } from '../../../utils/clone'
import { isDesktop } from '../../../utils/media-query'
import { Panel } from '../../Editor' import { Panel } from '../../Editor'
import { AutoSaveNotice } from '../../Editor/AutoSaveNotice' import { AutoSaveNotice } from '../../Editor/AutoSaveNotice'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { TableOfContents } from '../../TableOfContents' import { TableOfContents } from '../../TableOfContents'
import { Icon } from '../../_shared/Icon'
import { InviteMembers } from '../../_shared/InviteMembers'
import { PublishSettings } from '../PublishSettings' import { PublishSettings } from '../PublishSettings'
import styles from './EditView.module.scss' import styles from './EditView.module.scss'

View File

@ -13,33 +13,33 @@ import {
} from 'solid-js' } from 'solid-js'
import { createStore } from 'solid-js/store' import { createStore } from 'solid-js/store'
import { debounce } from 'throttle-debounce' import { debounce } from 'throttle-debounce'
import { DropArea } from '~/components/_shared/DropArea'
import { Icon } from '~/components/_shared/Icon'
import { InviteMembers } from '~/components/_shared/InviteMembers'
import { Loading } from '~/components/_shared/Loading'
import { Popover } from '~/components/_shared/Popover'
import { EditorSwiper } from '~/components/_shared/SolidSwiper'
import { ShoutForm, useEditorContext } from '~/context/editor'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import getMyShoutQuery from '~/graphql/query/core/article-my' import getMyShoutQuery from '~/graphql/query/core/article-my'
import type { Shout, Topic } from '~/graphql/schema/core.gen'
import { LayoutType } from '~/types/common' import { LayoutType } from '~/types/common'
import { MediaItem } from '~/types/mediaitem' import { MediaItem } from '~/types/mediaitem'
import { ShoutForm, useEditorContext } from '../../../context/editor' import { clone } from '~/utils/clone'
import { useLocalize } from '../../../context/localize' import { getImageUrl } from '~/utils/getImageUrl'
import type { Shout, Topic } from '../../../graphql/schema/core.gen' import { isDesktop } from '~/utils/media-query'
import { clone } from '../../../utils/clone' import { slugify } from '~/utils/slugify'
import { getImageUrl } from '../../../utils/getImageUrl'
import { isDesktop } from '../../../utils/media-query'
import { slugify } from '../../../utils/slugify'
import { Editor, Panel } from '../../Editor' import { Editor, Panel } from '../../Editor'
import { AudioUploader } from '../../Editor/AudioUploader' import { AudioUploader } from '../../Editor/AudioUploader'
import { AutoSaveNotice } from '../../Editor/AutoSaveNotice' import { AutoSaveNotice } from '../../Editor/AutoSaveNotice'
import { VideoUploader } from '../../Editor/VideoUploader' import { VideoUploader } from '../../Editor/VideoUploader'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { TableOfContents } from '../../TableOfContents' import { TableOfContents } from '../../TableOfContents'
import { DropArea } from '../../_shared/DropArea'
import { Icon } from '../../_shared/Icon'
import { InviteMembers } from '../../_shared/InviteMembers'
import { Loading } from '../../_shared/Loading'
import { Popover } from '../../_shared/Popover'
import { EditorSwiper } from '../../_shared/SolidSwiper'
import styles from './EditView.module.scss' import styles from './EditView.module.scss'
const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor')) const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor'))
const GrowingTextarea = lazy(() => import('../../_shared/GrowingTextarea/GrowingTextarea')) const GrowingTextarea = lazy(() => import('~/components/_shared/GrowingTextarea/GrowingTextarea'))
type Props = { type Props = {
shout: Shout shout: Shout

View File

@ -2,19 +2,19 @@ import { clsx } from 'clsx'
import { For, Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js' import { For, Show, createEffect, createSignal, on, onCleanup, onMount } from 'solid-js'
import { A } from '@solidjs/router' import { A } from '@solidjs/router'
import { Button } from '~/components/_shared/Button'
import { ConditionalWrapper } from '~/components/_shared/ConditionalWrapper'
import { Loading } from '~/components/_shared/Loading'
import { ArticleCardSwiper } from '~/components/_shared/SolidSwiper/ArticleCardSwiper'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import getShoutsQuery from '~/graphql/query/core/articles-load-by' import getShoutsQuery from '~/graphql/query/core/articles-load-by'
import getRandomTopShoutsQuery from '~/graphql/query/core/articles-load-random-top' import getRandomTopShoutsQuery from '~/graphql/query/core/articles-load-random-top'
import { LoadShoutsFilters, LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen'
import { LayoutType } from '~/types/common' import { LayoutType } from '~/types/common'
import { useLocalize } from '../../../context/localize' import { getUnixtime } from '~/utils/getServerDate'
import { LoadShoutsFilters, LoadShoutsOptions, Shout } from '../../../graphql/schema/core.gen' import { restoreScrollPosition, saveScrollPosition } from '~/utils/scroll'
import { getUnixtime } from '../../../utils/getServerDate'
import { restoreScrollPosition, saveScrollPosition } from '../../../utils/scroll'
import { ArticleCard } from '../../Feed/ArticleCard' import { ArticleCard } from '../../Feed/ArticleCard'
import { Button } from '../../_shared/Button'
import { ConditionalWrapper } from '../../_shared/ConditionalWrapper'
import { Loading } from '../../_shared/Loading'
import { ArticleCardSwiper } from '../../_shared/SolidSwiper/ArticleCardSwiper'
import styles from './Expo.module.scss' import styles from './Expo.module.scss'
type Props = { type Props = {

View File

@ -2,21 +2,26 @@ import { Meta } from '@solidjs/meta'
import { A, createAsync, useLocation, useNavigate, useSearchParams } from '@solidjs/router' import { A, createAsync, useLocation, useNavigate, useSearchParams } from '@solidjs/router'
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createMemo, createSignal, onMount } from 'solid-js' import { For, Show, createMemo, createSignal, onMount } from 'solid-js'
import { DropDown } from '~/components/_shared/DropDown'
import { Option } from '~/components/_shared/DropDown/DropDown' import { Option } from '~/components/_shared/DropDown/DropDown'
import { Icon } from '~/components/_shared/Icon'
import { InviteMembers } from '~/components/_shared/InviteMembers'
import { Loading } from '~/components/_shared/Loading'
import { ShareModal } from '~/components/_shared/ShareModal'
import ruKeywords from '~/config/locales/ru/keywords.json'
import enKeywords from '~/config/locales/ru/keywords.json'
import { useAuthors } from '~/context/authors'
import { useGraphQL } from '~/context/graphql' import { useGraphQL } from '~/context/graphql'
import { useLocalize } from '~/context/localize'
import { useReactions } from '~/context/reactions'
import { useSession } from '~/context/session'
import { useTopics } from '~/context/topics'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { loadUnratedShouts } from '~/lib/api/private' import { loadUnratedShouts } from '~/graphql/api/private'
import ruKeywords from '~/lib/locales/ru/keywords.json' import type { Author, Reaction, Shout } from '~/graphql/schema/core.gen'
import enKeywords from '~/lib/locales/ru/keywords.json'
import { FeedSearchParams } from '~/routes/feed/[...feed]' import { FeedSearchParams } from '~/routes/feed/[...feed]'
import { useAuthors } from '../../../context/authors' import { getImageUrl } from '~/utils/getImageUrl'
import { useLocalize } from '../../../context/localize' import { byCreated } from '~/utils/sortby'
import { useReactions } from '../../../context/reactions'
import { useSession } from '../../../context/session'
import { useTopics } from '../../../context/topics'
import type { Author, Reaction, Shout } from '../../../graphql/schema/core.gen'
import { getImageUrl } from '../../../utils/getImageUrl'
import { byCreated } from '../../../utils/sortby'
import { CommentDate } from '../../Article/CommentDate' import { CommentDate } from '../../Article/CommentDate'
import { getShareUrl } from '../../Article/SharePopup' import { getShareUrl } from '../../Article/SharePopup'
import { AuthorBadge } from '../../Author/AuthorBadge' import { AuthorBadge } from '../../Author/AuthorBadge'
@ -27,11 +32,6 @@ import stylesTopic from '../../Feed/CardTopic.module.scss'
import { Placeholder } from '../../Feed/Placeholder' import { Placeholder } from '../../Feed/Placeholder'
import { Sidebar } from '../../Feed/Sidebar' import { Sidebar } from '../../Feed/Sidebar'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { DropDown } from '../../_shared/DropDown'
import { Icon } from '../../_shared/Icon'
import { InviteMembers } from '../../_shared/InviteMembers'
import { Loading } from '../../_shared/Loading'
import { ShareModal } from '../../_shared/ShareModal'
import styles from './Feed.module.scss' import styles from './Feed.module.scss'
export const FEED_PAGE_SIZE = 20 export const FEED_PAGE_SIZE = 20

View File

@ -1,4 +1,4 @@
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import styles from '../../styles/FeedSettings.module.scss' import styles from '../../styles/FeedSettings.module.scss'

View File

@ -1,6 +1,6 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import { Icon } from '../_shared/Icon' import { Icon } from '../_shared/Icon'
import { useNavigate } from '@solidjs/router' import { useNavigate } from '@solidjs/router'

View File

@ -1,16 +1,16 @@
import { For, Show, createEffect, createMemo, createSignal, on } from 'solid-js' import { For, Show, createEffect, createMemo, createSignal, on } from 'solid-js'
import { Meta } from '@solidjs/meta' import { Meta } from '@solidjs/meta'
import enKeywords from '~/config/locales/en/keywords.json'
import ruKeywords from '~/config/locales/ru/keywords.json'
import { useAuthors } from '~/context/authors' import { useAuthors } from '~/context/authors'
import { loadShouts } from '~/lib/api/public' import { useLocalize } from '~/context/localize'
import ruKeywords from '~/lib/locales/ru/keywords.json' import { useTopics } from '~/context/topics'
import enKeywords from '~/lib/locales/ru/keywords.json' import { loadShouts } from '~/graphql/api/public'
import { Author, Shout, Topic } from '~/graphql/schema/core.gen'
import { SHOUTS_PER_PAGE } from '~/routes/(home)' import { SHOUTS_PER_PAGE } from '~/routes/(home)'
import { useLocalize } from '../../context/localize' import { capitalize } from '~/utils/capitalize'
import { useTopics } from '../../context/topics' import { splitToPages } from '~/utils/splitToPages'
import { Author, Shout, Topic } from '../../graphql/schema/core.gen'
import { capitalize } from '../../utils/capitalize'
import { splitToPages } from '../../utils/splitToPages'
import Banner from '../Discours/Banner' import Banner from '../Discours/Banner'
import Hero from '../Discours/Hero' import Hero from '../Discours/Hero'
import { Beside } from '../Feed/Beside' import { Beside } from '../Feed/Beside'

View File

@ -1,17 +1,20 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js' import { For, Show, createEffect, createMemo, createSignal, on, onMount } from 'solid-js'
import { Icon } from '~/components/_shared/Icon'
import { InviteMembers } from '~/components/_shared/InviteMembers'
import { Popover } from '~/components/_shared/Popover'
import { useInbox } from '~/context/inbox'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useUI } from '~/context/ui' import { useUI } from '~/context/ui'
import { useInbox } from '../../../context/inbox'
import { useLocalize } from '../../../context/localize'
import { useSession } from '../../../context/session'
import type { import type {
Chat, Chat,
ChatMember, ChatMember,
Message as MessageType, Message as MessageType,
MutationCreate_MessageArgs MutationCreate_MessageArgs
} from '../../../graphql/schema/chat.gen' } from '~/graphql/schema/chat.gen'
import type { Author } from '../../../graphql/schema/core.gen' import type { Author } from '~/graphql/schema/core.gen'
import SimplifiedEditor from '../../Editor/SimplifiedEditor' import SimplifiedEditor from '../../Editor/SimplifiedEditor'
import DialogCard from '../../Inbox/DialogCard' import DialogCard from '../../Inbox/DialogCard'
import DialogHeader from '../../Inbox/DialogHeader' import DialogHeader from '../../Inbox/DialogHeader'
@ -19,9 +22,6 @@ import { Message } from '../../Inbox/Message'
import MessagesFallback from '../../Inbox/MessagesFallback' import MessagesFallback from '../../Inbox/MessagesFallback'
import Search from '../../Inbox/Search' import Search from '../../Inbox/Search'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { Icon } from '../../_shared/Icon'
import { InviteMembers } from '../../_shared/InviteMembers'
import { Popover } from '../../_shared/Popover'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'
import styles from './Inbox.module.scss' import styles from './Inbox.module.scss'

View File

@ -1,16 +1,16 @@
import { clsx } from 'clsx' import { clsx } from 'clsx'
import { For, Show, createEffect, createSignal, on } from 'solid-js' import { For, Show, createEffect, createSignal, on } from 'solid-js'
import { FollowsFilter, useFollowing } from '../../../context/following' import { Loading } from '~/components/_shared/Loading'
import { useLocalize } from '../../../context/localize' import { SearchField } from '~/components/_shared/SearchField'
import { Author, Topic } from '../../../graphql/schema/core.gen' import { FollowsFilter, useFollowing } from '~/context/following'
import { dummyFilter } from '../../../utils/dummyFilter' import { useLocalize } from '~/context/localize'
import { isAuthor } from '../../../utils/isAuthor' import { Author, Topic } from '~/graphql/schema/core.gen'
import { dummyFilter } from '~/utils/dummyFilter'
import { isAuthor } from '~/utils/isAuthor'
import { AuthorBadge } from '../../Author/AuthorBadge' import { AuthorBadge } from '../../Author/AuthorBadge'
import { ProfileSettingsNavigation } from '../../Nav/ProfileSettingsNavigation' import { ProfileSettingsNavigation } from '../../Nav/ProfileSettingsNavigation'
import { TopicBadge } from '../../Topic/TopicBadge' import { TopicBadge } from '../../Topic/TopicBadge'
import { Loading } from '../../_shared/Loading'
import { SearchField } from '../../_shared/SearchField'
import styles from '../../../pages/profile/Settings.module.scss' import styles from '../../../pages/profile/Settings.module.scss'
import stylesSettings from '../../../styles/FeedSettings.module.scss' import stylesSettings from '../../../styles/FeedSettings.module.scss'

View File

@ -2,17 +2,17 @@ import { clsx } from 'clsx'
import { Show, createEffect, createMemo, createSignal, lazy, onMount } from 'solid-js' import { Show, createEffect, createMemo, createSignal, lazy, onMount } from 'solid-js'
import { createStore } from 'solid-js/store' import { createStore } from 'solid-js/store'
import { Button } from '~/components/_shared/Button'
import { Icon } from '~/components/_shared/Icon'
import { Image } from '~/components/_shared/Image'
import { ShoutForm, useEditorContext } from '~/context/editor'
import { useLocalize } from '~/context/localize'
import { useSession } from '~/context/session'
import { useTopics } from '~/context/topics'
import { useSnackbar, useUI } from '~/context/ui' import { useSnackbar, useUI } from '~/context/ui'
import { ShoutForm, useEditorContext } from '../../../context/editor' import { Topic } from '~/graphql/schema/core.gen'
import { useLocalize } from '../../../context/localize'
import { useSession } from '../../../context/session'
import { useTopics } from '../../../context/topics'
import { Topic } from '../../../graphql/schema/core.gen'
import { TopicSelect, UploadModalContent } from '../../Editor' import { TopicSelect, UploadModalContent } from '../../Editor'
import { Modal } from '../../Nav/Modal' import { Modal } from '../../Nav/Modal'
import { Button } from '../../_shared/Button'
import { Icon } from '../../_shared/Icon'
import { Image } from '../../_shared/Image'
import { useNavigate } from '@solidjs/router' import { useNavigate } from '@solidjs/router'
import { UploadedFile } from '~/types/upload' import { UploadedFile } from '~/types/upload'
@ -20,7 +20,7 @@ import stylesBeside from '../../Feed/Beside.module.scss'
import styles from './PublishSettings.module.scss' import styles from './PublishSettings.module.scss'
const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor')) const SimplifiedEditor = lazy(() => import('../../Editor/SimplifiedEditor'))
const GrowingTextarea = lazy(() => import('../../_shared/GrowingTextarea/GrowingTextarea')) const GrowingTextarea = lazy(() => import('~/components/_shared/GrowingTextarea/GrowingTextarea'))
const DESCRIPTION_MAX_LENGTH = 400 const DESCRIPTION_MAX_LENGTH = 400
type Props = { type Props = {

View File

@ -1,10 +1,10 @@
import { For, Show, createSignal, onMount } from 'solid-js' import { For, Show, createSignal, onMount } from 'solid-js'
import { useSearchParams } from '@solidjs/router' import { useSearchParams } from '@solidjs/router'
import { useFeed } from '../../context/feed' import { useFeed } from '~/context/feed'
import { useLocalize } from '../../context/localize' import { useLocalize } from '~/context/localize'
import type { SearchResult } from '../../graphql/schema/core.gen' import type { SearchResult } from '~/graphql/schema/core.gen'
import { restoreScrollPosition, saveScrollPosition } from '../../utils/scroll' import { restoreScrollPosition, saveScrollPosition } from '~/utils/scroll'
import { ArticleCard } from '../Feed/ArticleCard' import { ArticleCard } from '../Feed/ArticleCard'
import '../../styles/Search.scss' import '../../styles/Search.scss'

Some files were not shown because too many files have changed in this diff Show More