release 19th nov #118
@@ -31,6 +31,7 @@
|
|||||||
"react": "^16.13.1",
|
"react": "^16.13.1",
|
||||||
"react-dom": "^16.13.1",
|
"react-dom": "^16.13.1",
|
||||||
"react-dropzone": "^11.2.1",
|
"react-dropzone": "^11.2.1",
|
||||||
|
"react-helmet": "^6.1.0",
|
||||||
"react-image-crop": "^8.6.6",
|
"react-image-crop": "^8.6.6",
|
||||||
"rich-markdown-editor": "^11.0.2",
|
"rich-markdown-editor": "^11.0.2",
|
||||||
"styled-components": "^5.2.0",
|
"styled-components": "^5.2.0",
|
||||||
|
|||||||
@@ -88,9 +88,11 @@ const PartProfile = ({
|
|||||||
className="mt-6 ml-auto hover:shadow-lg bg-gradient-to-r from-transparent to-indigo-100"
|
className="mt-6 ml-auto hover:shadow-lg bg-gradient-to-r from-transparent to-indigo-100"
|
||||||
shouldAnimateHover
|
shouldAnimateHover
|
||||||
iconName="chevron-down"
|
iconName="chevron-down"
|
||||||
onClick={() => {}}
|
onClick={() => {
|
||||||
|
document.getElementById('comment-section').scrollIntoView()
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
Comments 11
|
{userPart.Part.Comment.length} Comments
|
||||||
</Button>
|
</Button>
|
||||||
<Link
|
<Link
|
||||||
to={routes.ide({
|
to={routes.ide({
|
||||||
@@ -155,7 +157,10 @@ const PartProfile = ({
|
|||||||
{!isEditable && (
|
{!isEditable && (
|
||||||
<>
|
<>
|
||||||
<div className="h-px bg-indigo-200 mt-8" />
|
<div className="h-px bg-indigo-200 mt-8" />
|
||||||
<h3 className="text-indigo-800 text-lg font-roboto tracking-wider mb-4">
|
<h3
|
||||||
|
className="text-indigo-800 text-lg font-roboto tracking-wider mb-4"
|
||||||
|
id="comment-section"
|
||||||
|
>
|
||||||
Comments
|
Comments
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
|
|||||||
23
web/src/components/Seo/Seo.js
Normal file
23
web/src/components/Seo/Seo.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { Helmet } from 'react-helmet'
|
||||||
|
|
||||||
|
const Seo = ({ title, description, lang }) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Helmet
|
||||||
|
htmlAttributes={{
|
||||||
|
lang,
|
||||||
|
}}
|
||||||
|
title={title}
|
||||||
|
titleTemplate={`Cadhub - ${title}`}
|
||||||
|
>
|
||||||
|
<meta property="og:locale" content={lang} />
|
||||||
|
<meta property="og:title" content={title} />
|
||||||
|
<meta property="og:description" content={description} />
|
||||||
|
<meta name="description" content={description} />
|
||||||
|
<title>Cadhub - {title}</title>
|
||||||
|
</Helmet>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Seo
|
||||||
@@ -48,7 +48,9 @@
|
|||||||
/* stop pop over from scrolling */
|
/* stop pop over from scrolling */
|
||||||
overflow: visible !important;
|
overflow: visible !important;
|
||||||
}
|
}
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
body {
|
body {
|
||||||
/* TODO can I use a tailwind class here? */
|
/* TODO can I use a tailwind class here? */
|
||||||
background-color: #f7fafc;
|
background-color: #f7fafc;
|
||||||
|
|||||||
@@ -3,8 +3,10 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="keywords" content="cadhub, app, application, web application, cad, code, code-cad, cad-modeling, community, website, cascade studio, openscad" />
|
||||||
<title>CadHub</title> <!-- to be replaced by react helmet -->
|
<meta property="og:type" content="website" />
|
||||||
|
<meta name="robots" content="index, follow" />
|
||||||
|
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||||
<script>
|
<script>
|
||||||
// Install Cascade Studio as a Progressive Web App for Offline Access
|
// Install Cascade Studio as a Progressive Web App for Offline Access
|
||||||
// This needs to be put before ANY HTTP Requests are made, so it can cache them.
|
// This needs to be put before ANY HTTP Requests are made, so it can cache them.
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import CommentCell from 'src/components/CommentCell'
|
import CommentCell from 'src/components/CommentCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const CommentPage = ({ id }) => {
|
const CommentPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Comment" description="Comment page" lang="en-US" />
|
||||||
|
|
||||||
<CommentCell id={id} />
|
<CommentCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import CommentsCell from 'src/components/CommentsCell'
|
import CommentsCell from 'src/components/CommentsCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const CommentsPage = () => {
|
const CommentsPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Comments" description="Comments page" lang="en-US" />
|
||||||
|
|
||||||
<CommentsCell />
|
<CommentsCell />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import EditCommentCell from 'src/components/EditCommentCell'
|
import EditCommentCell from 'src/components/EditCommentCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const EditCommentPage = ({ id }) => {
|
const EditCommentPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Edit comment" description="Edit comment page" lang="en-US" />
|
||||||
|
|
||||||
<EditCommentCell id={id} />
|
<EditCommentCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,11 +2,14 @@ import { useAuth } from '@redwoodjs/auth'
|
|||||||
|
|
||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import Part2Cell from 'src/components/Part2Cell'
|
import Part2Cell from 'src/components/Part2Cell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const EditPart2Page = ({ userName, partTitle }) => {
|
const EditPart2Page = ({ userName, partTitle }) => {
|
||||||
const { currentUser } = useAuth()
|
const { currentUser } = useAuth()
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title={partTitle} description="Edit part page" lang="en-US" />
|
||||||
|
|
||||||
<Part2Cell
|
<Part2Cell
|
||||||
userName={userName}
|
userName={userName}
|
||||||
partTitle={partTitle}
|
partTitle={partTitle}
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import EditPartCell from 'src/components/EditPartCell'
|
import EditPartCell from 'src/components/EditPartCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const EditPartPage = ({ id }) => {
|
const EditPartPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Edit part" description="Edit part page" lang="en-US" />
|
||||||
|
|
||||||
<EditPartCell id={id} />
|
<EditPartCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import EditPartReactionCell from 'src/components/EditPartReactionCell'
|
import EditPartReactionCell from 'src/components/EditPartReactionCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const EditPartReactionPage = ({ id }) => {
|
const EditPartReactionPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo
|
||||||
|
title="Edit part reaction"
|
||||||
|
description="Edit part reaction page"
|
||||||
|
lang="en-US"
|
||||||
|
/>
|
||||||
|
|
||||||
<EditPartReactionCell id={id} />
|
<EditPartReactionCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import EditUser2Cell from 'src/components/EditUser2Cell'
|
import EditUser2Cell from 'src/components/EditUser2Cell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const UserPage = ({ userName }) => {
|
const UserPage = ({ userName }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title={userName} description="Add new part page" lang="en-US" />
|
||||||
|
|
||||||
<EditUser2Cell userName={userName} />
|
<EditUser2Cell userName={userName} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import EditUserCell from 'src/components/EditUserCell'
|
import EditUserCell from 'src/components/EditUserCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const EditUserPage = ({ id }) => {
|
const EditUserPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Edit user" description="Edit user page" lang="en-US" />
|
||||||
|
|
||||||
<EditUserCell id={id} />
|
<EditUserCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,9 +6,12 @@
|
|||||||
// avoid the possibility that it will cause its own error. If it does, Redwood will
|
// avoid the possibility that it will cause its own error. If it does, Redwood will
|
||||||
// still render a generic error page, but your users will prefer something a bit more
|
// still render a generic error page, but your users will prefer something a bit more
|
||||||
// thoughtful. =)
|
// thoughtful. =)
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
export default () => (
|
export default () => (
|
||||||
<main>
|
<main>
|
||||||
|
<Seo title="Fatal error" description="Fatal error" lang="en-US" />
|
||||||
|
|
||||||
<style
|
<style
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: `
|
__html: `
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import IdePartCell from 'src/components/IdePartCell'
|
import IdePartCell from 'src/components/IdePartCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const IdePartPage = ({ userName, partTitle }) => {
|
const IdePartPage = ({ userName, partTitle }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title={partTitle} description={partTitle} lang="en-US" />
|
||||||
|
|
||||||
<IdePartCell userName={userName} partTitle={partTitle} />
|
<IdePartCell userName={userName} partTitle={partTitle} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import NewComment from 'src/components/NewComment'
|
import NewComment from 'src/components/NewComment'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const NewCommentPage = () => {
|
const NewCommentPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo
|
||||||
|
title="New comment page"
|
||||||
|
description="New comment page"
|
||||||
|
lang="en-US"
|
||||||
|
/>
|
||||||
|
|
||||||
<NewComment />
|
<NewComment />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { navigate, routes } from '@redwoodjs/router'
|
|||||||
|
|
||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import Part2Cell from 'src/components/Part2Cell'
|
import Part2Cell from 'src/components/Part2Cell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const NewPart2Page = ({ userName }) => {
|
const NewPart2Page = ({ userName }) => {
|
||||||
const { isAuthenticated, currentUser } = useAuth()
|
const { isAuthenticated, currentUser } = useAuth()
|
||||||
@@ -12,6 +13,8 @@ const NewPart2Page = ({ userName }) => {
|
|||||||
}, [currentUser])
|
}, [currentUser])
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="New part" description="Add new part page" lang="en-US" />
|
||||||
|
|
||||||
<Part2Cell
|
<Part2Cell
|
||||||
userName={userName}
|
userName={userName}
|
||||||
currentUserId={currentUser?.sub}
|
currentUserId={currentUser?.sub}
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import NewPart from 'src/components/NewPart'
|
import NewPart from 'src/components/NewPart'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const NewPartPage = () => {
|
const NewPartPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="New Part" description="New part page" lang="en-US" />
|
||||||
|
|
||||||
<NewPart />
|
<NewPart />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import NewPartReaction from 'src/components/NewPartReaction'
|
import NewPartReaction from 'src/components/NewPartReaction'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const NewPartReactionPage = () => {
|
const NewPartReactionPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo
|
||||||
|
title="New part reaction"
|
||||||
|
description="New part reaction page"
|
||||||
|
lang="en-US"
|
||||||
|
/>
|
||||||
|
|
||||||
<NewPartReaction />
|
<NewPartReaction />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import NewUser from 'src/components/NewUser'
|
import NewUser from 'src/components/NewUser'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const NewUserPage = () => {
|
const NewUserPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="New user" description="New user page" lang="en-US" />
|
||||||
|
|
||||||
<NewUser />
|
<NewUser />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
export default () => (
|
export default () => (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Page not found" description="404 page not found" lang="en-US" />
|
||||||
|
|
||||||
<style
|
<style
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: `
|
__html: `
|
||||||
|
|||||||
@@ -2,11 +2,14 @@ import { useAuth } from '@redwoodjs/auth'
|
|||||||
|
|
||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import Part2Cell from 'src/components/Part2Cell'
|
import Part2Cell from 'src/components/Part2Cell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const Part2Page = ({ userName, partTitle }) => {
|
const Part2Page = ({ userName, partTitle }) => {
|
||||||
const { currentUser } = useAuth()
|
const { currentUser } = useAuth()
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title={partTitle} description={partTitle} lang="en-US" />
|
||||||
|
|
||||||
<Part2Cell
|
<Part2Cell
|
||||||
userName={userName}
|
userName={userName}
|
||||||
partTitle={partTitle}
|
partTitle={partTitle}
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import PartCell from 'src/components/PartCell'
|
import PartCell from 'src/components/PartCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const PartPage = ({ id }) => {
|
const PartPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Part" description="Part page" lang="en-US" />
|
||||||
|
|
||||||
<PartCell id={id} />
|
<PartCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import PartReactionCell from 'src/components/PartReactionCell'
|
import PartReactionCell from 'src/components/PartReactionCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const PartReactionPage = ({ id }) => {
|
const PartReactionPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo
|
||||||
|
title="Part reaction"
|
||||||
|
description="Part reaction page"
|
||||||
|
lang="en-US"
|
||||||
|
/>
|
||||||
|
|
||||||
<PartReactionCell id={id} />
|
<PartReactionCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import PartReactionsCell from 'src/components/PartReactionsCell'
|
import PartReactionsCell from 'src/components/PartReactionsCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const PartReactionsPage = () => {
|
const PartReactionsPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo
|
||||||
|
title="Part reactions"
|
||||||
|
description="Part reactions page"
|
||||||
|
lang="en-US"
|
||||||
|
/>
|
||||||
|
|
||||||
<PartReactionsCell />
|
<PartReactionsCell />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import PartsCell from 'src/components/PartsCell'
|
import PartsCell from 'src/components/PartsCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const PartsPage = () => {
|
const PartsPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Parts page" description="Cadhub parts page" lang="en-US" />
|
||||||
|
|
||||||
<PartsCell />
|
<PartsCell />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import User2Cell from 'src/components/User2Cell'
|
import User2Cell from 'src/components/User2Cell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const UserPage = ({ userName }) => {
|
const UserPage = ({ userName }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title={userName} description="User page" lang="en-US" />
|
||||||
|
|
||||||
<User2Cell userName={userName} />
|
<User2Cell userName={userName} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import UserCell from 'src/components/UserCell'
|
import UserCell from 'src/components/UserCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const UserPage = ({ id }) => {
|
const UserPage = ({ id }) => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="User" description="User page" lang="en-US" />
|
||||||
|
|
||||||
<UserCell id={id} />
|
<UserCell id={id} />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import MainLayout from 'src/layouts/MainLayout'
|
import MainLayout from 'src/layouts/MainLayout'
|
||||||
import UsersCell from 'src/components/UsersCell'
|
import UsersCell from 'src/components/UsersCell'
|
||||||
|
import Seo from 'src/components/Seo/Seo'
|
||||||
|
|
||||||
const UsersPage = () => {
|
const UsersPage = () => {
|
||||||
return (
|
return (
|
||||||
<MainLayout>
|
<MainLayout>
|
||||||
|
<Seo title="Users" description="Users page" lang="en-US" />
|
||||||
|
|
||||||
<UsersCell />
|
<UsersCell />
|
||||||
</MainLayout>
|
</MainLayout>
|
||||||
)
|
)
|
||||||
|
|||||||
17
yarn.lock
17
yarn.lock
@@ -13155,7 +13155,7 @@ react-error-overlay@^6.0.1, react-error-overlay@^6.0.3:
|
|||||||
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108"
|
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108"
|
||||||
integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==
|
integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==
|
||||||
|
|
||||||
react-fast-compare@^3.0.1:
|
react-fast-compare@^3.0.1, react-fast-compare@^3.1.1:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
|
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
|
||||||
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
|
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
|
||||||
@@ -13183,6 +13183,16 @@ react-helmet-async@^1.0.2:
|
|||||||
react-fast-compare "^3.0.1"
|
react-fast-compare "^3.0.1"
|
||||||
shallowequal "^1.1.0"
|
shallowequal "^1.1.0"
|
||||||
|
|
||||||
|
react-helmet@^6.1.0:
|
||||||
|
version "6.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
|
||||||
|
integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
|
||||||
|
dependencies:
|
||||||
|
object-assign "^4.1.1"
|
||||||
|
prop-types "^15.7.2"
|
||||||
|
react-fast-compare "^3.1.1"
|
||||||
|
react-side-effect "^2.1.0"
|
||||||
|
|
||||||
react-hook-form@^6.5.3:
|
react-hook-form@^6.5.3:
|
||||||
version "6.7.1"
|
version "6.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.7.1.tgz#58f1ce3ba6b0f3cb05b665a4cc268d0623ea9e1a"
|
resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.7.1.tgz#58f1ce3ba6b0f3cb05b665a4cc268d0623ea9e1a"
|
||||||
@@ -13247,6 +13257,11 @@ react-portal@^4.2.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
prop-types "^15.5.8"
|
prop-types "^15.5.8"
|
||||||
|
|
||||||
|
react-side-effect@^2.1.0:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3"
|
||||||
|
integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==
|
||||||
|
|
||||||
react-sizeme@^2.6.7:
|
react-sizeme@^2.6.7:
|
||||||
version "2.6.12"
|
version "2.6.12"
|
||||||
resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e"
|
resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e"
|
||||||
|
|||||||
Reference in New Issue
Block a user