├── public
├── _redirects
└── index.html
├── src
├── react-app-env.d.ts
├── mobile
│ ├── pages
│ │ ├── video
│ │ │ ├── video.scss
│ │ │ └── index.tsx
│ │ ├── following
│ │ │ └── index.tsx
│ │ ├── profile
│ │ │ ├── OwnProfile.tsx
│ │ │ └── profile.scss
│ │ ├── notifications
│ │ │ ├── notifications.scss
│ │ │ └── index.tsx
│ │ ├── home
│ │ │ ├── home.scss
│ │ │ └── index.tsx
│ │ ├── search
│ │ │ ├── search.scss
│ │ │ └── index.tsx
│ │ ├── edit-profile
│ │ │ └── edit-profile.scss
│ │ └── upload
│ │ │ └── upload.scss
│ ├── components
│ │ ├── swiper
│ │ │ ├── swiper.module.scss
│ │ │ └── index.tsx
│ │ ├── page-with-navbar
│ │ │ ├── page-with-navbar.module.scss
│ │ │ └── index.tsx
│ │ ├── profile-video
│ │ │ ├── profile-video.module.scss
│ │ │ └── index.tsx
│ │ ├── search-bar
│ │ │ ├── search-bar.module.scss
│ │ │ └── index.tsx
│ │ ├── drawer
│ │ │ ├── AccountBox.tsx
│ │ │ ├── drawer.scss
│ │ │ └── index.tsx
│ │ ├── searched-account
│ │ │ ├── searched-account.module.scss
│ │ │ └── index.tsx
│ │ ├── searched-video
│ │ │ ├── searched-video.module.scss
│ │ │ └── index.tsx
│ │ ├── navbar
│ │ │ ├── navbar.scss
│ │ │ └── index.tsx
│ │ ├── unauthed-page
│ │ │ ├── unauthed-page.scss
│ │ │ └── index.tsx
│ │ ├── notification-box
│ │ │ ├── notification-box.module.scss
│ │ │ └── index.tsx
│ │ └── comments-modal
│ │ │ ├── AddComment.tsx
│ │ │ └── Reply.tsx
│ ├── store
│ │ ├── index.ts
│ │ └── slices
│ │ │ └── navbar-slice.ts
│ ├── helpers
│ │ └── error-notification.ts
│ ├── index.scss
│ └── index.tsx
├── common
│ ├── components
│ │ ├── legal-notice
│ │ │ ├── legal-notice.scss
│ │ │ └── index.tsx
│ │ ├── fullscreen-spinner
│ │ │ ├── fullscreen-spinner.module.scss
│ │ │ └── index.tsx
│ │ ├── dropdown
│ │ │ ├── dropdown.module.scss
│ │ │ └── index.tsx
│ │ ├── loading-spinner
│ │ │ ├── index.tsx
│ │ │ └── spinner.module.scss
│ │ ├── private-route
│ │ │ └── index.tsx
│ │ ├── notification
│ │ │ ├── notification.module.scss
│ │ │ └── index.tsx
│ │ ├── alert
│ │ │ ├── alert.module.scss
│ │ │ └── index.tsx
│ │ ├── input-field
│ │ │ ├── input.module.scss
│ │ │ └── index.tsx
│ │ └── auth-modal
│ │ │ ├── auth-modal.scss
│ │ │ ├── index.tsx
│ │ │ ├── LogIn.tsx
│ │ │ └── SignUp.tsx
│ ├── api
│ │ ├── auth.ts
│ │ ├── index.ts
│ │ ├── feed.ts
│ │ ├── user.ts
│ │ └── video.ts
│ ├── store
│ │ ├── slices
│ │ │ ├── auth-modal-slice.ts
│ │ │ ├── notification-slice.ts
│ │ │ └── auth-slice.ts
│ │ └── index.ts
│ ├── constants.ts
│ ├── utils.ts
│ ├── types.ts
│ └── styles.scss
├── pc
│ ├── components
│ │ ├── container
│ │ │ ├── container.module.scss
│ │ │ └── index.tsx
│ │ ├── page-with-sidebar
│ │ │ └── index.tsx
│ │ ├── profile-card
│ │ │ ├── profile-card.scss
│ │ │ └── index.tsx
│ │ ├── play-on-scroll
│ │ │ └── index.ts
│ │ ├── profile-buttons
│ │ │ ├── profile-buttons.scss
│ │ │ └── index.tsx
│ │ ├── action-button
│ │ │ ├── action-button.module.scss
│ │ │ └── index.tsx
│ │ ├── search-results
│ │ │ ├── AccountCard.tsx
│ │ │ ├── VideoCard.tsx
│ │ │ └── search-results.module.scss
│ │ ├── suggestion-card
│ │ │ ├── suggestion-card.module.scss
│ │ │ └── index.tsx
│ │ ├── video-card
│ │ │ ├── useVideoDynamics.ts
│ │ │ └── video-card.scss
│ │ ├── user-dropdown
│ │ │ ├── user-dropdown.scss
│ │ │ ├── index.tsx
│ │ │ └── DD.tsx
│ │ ├── video-modal
│ │ │ ├── Likes.tsx
│ │ │ ├── CommentForm.tsx
│ │ │ ├── ReplyForm.tsx
│ │ │ └── LoadVideoModal.tsx
│ │ ├── header
│ │ │ ├── SearchBar.tsx
│ │ │ └── header.module.scss
│ │ ├── follow-button
│ │ │ └── index.tsx
│ │ ├── sidebar
│ │ │ └── sidebar.scss
│ │ └── video-tag
│ │ │ └── video-tag.module.scss
│ ├── pages
│ │ ├── video
│ │ │ ├── video.scss
│ │ │ └── index.tsx
│ │ ├── home
│ │ │ ├── home.scss
│ │ │ └── index.tsx
│ │ ├── profile
│ │ │ ├── VideosLayout.tsx
│ │ │ └── profile.scss
│ │ ├── following
│ │ │ ├── following.scss
│ │ │ └── index.tsx
│ │ ├── search
│ │ │ ├── search.scss
│ │ │ └── index.tsx
│ │ ├── edit-profile
│ │ │ └── edit-profile.scss
│ │ └── upload
│ │ │ └── upload-page.scss
│ ├── store
│ │ ├── index.ts
│ │ └── slices
│ │ │ ├── search-slice.ts
│ │ │ └── sidebar-slice.ts
│ ├── index.tsx
│ └── index.scss
├── index.tsx
└── App.tsx
├── gallery
├── video.png
├── homepage.png
├── notice.png
├── mobile_home.png
├── tiktok+react.png
├── video_light.png
├── homepage_light.png
├── mobile_profile.png
├── mobile_home_light.png
└── mobile_profile_light.png
├── .prettierrc
├── .gitignore
├── tsconfig.json
├── .github
└── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── package.json
/public/_redirects:
--------------------------------------------------------------------------------
1 | /* /index.html 200
--------------------------------------------------------------------------------
/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
{props.description}
24 |{props.description}
23 |{description}
39 | 42 |25 | {props.caption} 26 | {props.tags!.map((tag, i) => ( 27 | #{tag} 28 | ))} 29 |
30 |{props.description}
40 |{props.name}
49 |{props.caption}
63 |64 | {props.tags!.map((tag, i) => ( 65 | #{tag} 66 | ))} 67 |
68 |79 | {user.followers} 80 | {user.followers! === 1 ? "Follower" : "Followers"} 81 |
82 |83 | {user.totalLikes} 84 | {user.totalLikes! === 1 ? "Like" : "Likes"} 85 |
86 |{user.description}
88 | > 89 | )} 90 |{props.message}
80 | {convertToDate(props.createdAt)} 81 |{props.comment}
97 |