소스 검색

betta meta

Jimmy Chion 3 년 전
부모
커밋
bdffd683b4
4개의 변경된 파일96개의 추가작업 그리고 8개의 파일을 삭제
  1. 1 0
      package-lock.json
  2. BIN
      public/social.png
  3. 87 0
      src/components/HeadContent.tsx
  4. 8 8
      src/pages/index.tsx

+ 1 - 0
package-lock.json

@@ -5,6 +5,7 @@
   "requires": true,
   "packages": {
     "": {
+      "name": "grainy-gradients",
       "version": "0.1.0",
       "dependencies": {
         "@ant-design/icons": "^4.6.3",

BIN
public/social.png


+ 87 - 0
src/components/HeadContent.tsx

@@ -0,0 +1,87 @@
+import Head from 'next/head';
+import React from 'react';
+
+interface IHeadContent {
+  title: string;
+  description: string;
+  canonicalUrl: string;
+  canonicalImage: string;
+  canonicalImageAlt?: string;
+  socialTitle?: string;
+  socialDescription?: string;
+  socialImage?: string;
+  socialImageAlt?: string;
+}
+
+const HeadContent: React.FC<IHeadContent> = (props) => {
+  const {
+    title,
+    description,
+    canonicalImage,
+    canonicalImageAlt,
+    canonicalUrl,
+    socialTitle,
+    socialDescription,
+    socialImage,
+    socialImageAlt,
+  } = props;
+
+  return (
+    <>
+      <Head>
+        <title>{title}</title>
+        {/* <link rel="icon" href={'/favicon.ico'} /> */}
+        {/* <link rel="icon" href={'/icon.svg'} type="image/svg+xml" /> */}
+        <link rel="canonical" href={canonicalUrl} />
+        {/* <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> */}
+        <meta name="description" content={description} />
+        <meta name="keywords" content="noise, gradient, css" />
+        <meta name="title" content={title} />
+        <meta name="theme-color" content="#333333" />
+
+        <meta prefix="og: http://ogp.me/ns#" property="og:url" content={canonicalUrl} />
+        <meta prefix="og: http://ogp.me/ns#" property="og:type" content="website" />
+        <meta prefix="og: http://ogp.me/ns#" property="og:title" content={socialTitle || title} />
+        <meta
+          prefix="og: http://ogp.me/ns#"
+          property="og:description"
+          content={socialDescription || description}
+        />
+        {(socialImage || canonicalImage) && (
+          <meta
+            prefix="og: http://ogp.me/ns#"
+            property="og:image"
+            content={socialImage || canonicalImage}
+          />
+        )}
+        {(socialImage || canonicalImage) && (
+          <meta
+            prefix="og: http://ogp.me/ns#"
+            property="og:image:alt"
+            content={socialImageAlt || canonicalImageAlt}
+          />
+        )}
+        <meta prefix="og: http://ogp.me/ns#" property="og:locale" content="en_US" />
+
+        <meta name="twitter:url" content={canonicalUrl} />
+        <meta name="twitter:title" content={socialTitle || title} />
+        <meta name="twitter:description" content={socialDescription || description} />
+        {(socialImage || canonicalImage) && (
+          <meta name="twitter:image" content={socialImage || canonicalImage} />
+        )}
+        {(socialImage || canonicalImage) && (
+          <meta name="twitter:image:alt" content={socialImageAlt || canonicalImageAlt} />
+        )}
+        <meta name="twitter:card" content="summary_large_image" />
+        {/* <meta name="twitter:site" content="@jimmmy" /> */}
+
+        <meta name="application-name" content={socialTitle || title} />
+        <meta name="apple-mobile-web-app-title" content={socialTitle || title} />
+        {/* <link rel="apple-touch-icon" sizes="180x180" href="/static/touch/apple-touch-icon.png" /> */}
+        {/* <link rel="manifest" href="/manifest.webmanifest" /> */}
+      </Head>
+    </>
+  );
+};
+
+export default HeadContent;

+ 8 - 8
src/pages/index.tsx

@@ -1,8 +1,8 @@
-import Head from 'next/head';
 import React from 'react';
 import styled from 'styled-components';
 import { SvgControls, CssControls, FilterControls, Reset } from '~/components/CodeBlocks';
 import Output from '~/components/CodeBlocks/Output';
+import HeadContent from '~/components/HeadContent';
 import { LinkOut } from '~/components/LinkOut';
 import { Row, LeftCol, Space, RightCol } from '~/components/layout';
 import { breakpoints } from '~/components/layout';
@@ -10,13 +10,13 @@ import { breakpoints } from '~/components/layout';
 const IndexPage = () => {
   return (
     <div>
-      <Head>
-        <title>Grainy Gradients playground</title>
-        <meta name="description" content="Explore the parameters that make up noisy gradients" />
-        <meta name="keywords" content="grainy gradient" />
-        <meta name="title" content="Grainy Gradients playground" />
-        <meta name="theme-color" content="#fff" />
-      </Head>
+      <HeadContent
+        title="Grainy Gradients playground"
+        description="Explore the parameters that make up noisy gradients"
+        canonicalUrl="https://grainy-gradients.vercel.app"
+        canonicalImage="/social.png"
+        canonicalImageAlt="Sphere with shadows made of grainy gradients"
+      />
       <Row>
         <LeftCol>
           <Scroll>