mirror of
https://github.com/phuoc-ng/csslayout.git
synced 2025-08-06 14:16:50 +02:00
32
README.md
32
README.md
@@ -47,20 +47,20 @@ this
|
|||||||
|
|
||||||
- Clone the project:
|
- Clone the project:
|
||||||
|
|
||||||
~~~
|
~~~ console
|
||||||
$ git clone https://github.com/phuoc-ng/csslayout
|
$ git clone https://github.com/phuoc-ng/csslayout
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
- Install the dependencies:
|
- Install the dependencies:
|
||||||
|
|
||||||
~~~
|
~~~ console
|
||||||
$ cd csslayout
|
$ cd csslayout
|
||||||
$ npm install
|
$ npm install
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
- Run it on the local:
|
- Run it on the local:
|
||||||
|
|
||||||
~~~
|
~~~ console
|
||||||
$ npm run dev-server
|
$ npm run dev-server
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ PRs are welcomed. If you thing there are any missing useful layouts or patterns,
|
|||||||
|
|
||||||
It's important to note that you should run the following command to lint the code:
|
It's important to note that you should run the following command to lint the code:
|
||||||
|
|
||||||
~~~
|
~~~ console
|
||||||
$ npm run lint
|
$ npm run lint
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
@@ -80,8 +80,22 @@ If there is any issue, it will be logged in the `tslint.log` file.
|
|||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
This project is developed by [Nguyen Huu Phuoc](https://twitter.com/nghuuphuoc).
|
This project is developed by _Nguyen Huu Phuoc_. I love building products and sharing knowledge.
|
||||||
You might be interesting in my projects:
|
|
||||||
* [FormValidation](https://formvalidation.io)
|
Be my friend on
|
||||||
* [BlurPage](https://blur.page)
|
* [Twitter](https://twitter.com/nghuuphuoc)
|
||||||
* [React PDF Viewer](https://react-pdf-viewer.dev)
|
* [dev.to](https://dev.to/phuocng)
|
||||||
|
* [Github](https://github.com/phuoc-ng)
|
||||||
|
|
||||||
|
## Products
|
||||||
|
|
||||||
|
You might be interesting in my products:
|
||||||
|
|
||||||
|
| Product | Description |
|
||||||
|
|---------------------------------------------------|-------------------------------------------------------------------|
|
||||||
|
| [Blur Page](https://blur.page) | A browser extension to hide sensitive information on a web page |
|
||||||
|
| [CSS Layout](https://csslayout.io) | A collection of popular layouts and patterns made with CSS |
|
||||||
|
| [Fake Numbers](https://fakenumbers.io) | Generate fake and valid numbers |
|
||||||
|
| [Form Validation](https://formvalidation.io) | The best validation library for JavaScript |
|
||||||
|
| [HTML DOM](https://htmldom.dev) | How to manage HTML DOM with vanilla JavaScript |
|
||||||
|
| [React PDF Viewer](https://react-pdf-viewer.dev) | A React component to view a PDF document |
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro&display=swap" rel="stylesheet">
|
||||||
</head>
|
</head>
|
||||||
<body class='font-sans w-full'>
|
<body class='font-sans w-full'>
|
||||||
<div id="root" class="m-auto max-w-6xl"></div>
|
<div id="root"></div>
|
||||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-139616701-3"></script>
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-139616701-3"></script>
|
||||||
<script>
|
<script>
|
||||||
window.dataLayer = window.dataLayer || [];
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
@@ -8,7 +8,6 @@ import { Link } from 'react-router-dom';
|
|||||||
|
|
||||||
import useDocumentTitle from '../hooks/useDocumentTitle';
|
import useDocumentTitle from '../hooks/useDocumentTitle';
|
||||||
import Layout from './Layout';
|
import Layout from './Layout';
|
||||||
import ProductHuntBadge from './ProductHuntBadge';
|
|
||||||
|
|
||||||
interface DetailsLayoutProps {
|
interface DetailsLayoutProps {
|
||||||
title: string;
|
title: string;
|
||||||
@@ -40,10 +39,7 @@ const DetailsLayout: React.FC<DetailsLayoutProps> = ({ title, children }) => {
|
|||||||
<span className='mx-2'>/</span>
|
<span className='mx-2'>/</span>
|
||||||
<h1>{title}</h1>
|
<h1>{title}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div className='flex justify-center pb-5'>
|
<div className='xl:border xl:border-gray-400'>
|
||||||
<ProductHuntBadge />
|
|
||||||
</div>
|
|
||||||
<div className='xl:border-l xl:border-t xl:border-r xl:border-gray-400'>
|
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
@@ -9,191 +9,137 @@ import SubscribeForm from './SubscribeForm';
|
|||||||
|
|
||||||
const Footer: React.FC<{}> = () => {
|
const Footer: React.FC<{}> = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<div className='border-t pt-6 pb-16 border-gray-400'>
|
||||||
<div
|
<div className='ml-auto mr-auto max-w-4xl px-2 lg:px-0'>
|
||||||
className='xl:border-l xl:border-r xl:border-gray-400'
|
|
||||||
style={{
|
|
||||||
padding: '32px',
|
|
||||||
textAlign: 'center',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div style={{ lineHeight: 1.5, marginBottom: '12px' }}>
|
|
||||||
Subscribe to the newsletter for the latest layouts or patterns. No spam. Ever!
|
|
||||||
</div>
|
|
||||||
<SubscribeForm />
|
<SubscribeForm />
|
||||||
</div>
|
<div>
|
||||||
<div
|
<h3 className='text-xl sm:text-2xl font-semibold mb-2'>Products</h3>
|
||||||
className='sm:flex md:border-b md:border-gray-400 xl:border-l xl:border-r xl:border-b xl:border-gray-400 xl:mb-16'
|
<ul className='flex flex-wrap -ml-1 -mr-1'>
|
||||||
>
|
<li className='w-1/2 sm:w-1/3 px-1 mb-6'>
|
||||||
<div
|
<a
|
||||||
className='border-t border-gray-400 sm:border-r'
|
href="https://blur.page"
|
||||||
style={{
|
rel="noopener noreferrer"
|
||||||
display: 'flex',
|
style={{ textDecoration: 'none' }}
|
||||||
flex: 1,
|
target="_blank"
|
||||||
fontSize: '16px',
|
title="BlurPage - a browser extension to hide sensitive element on page"
|
||||||
lineHeight: 1.5,
|
|
||||||
padding: '24px',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<ul
|
|
||||||
style={{
|
|
||||||
fontWeight: 500,
|
|
||||||
lineHeight: 1.5,
|
|
||||||
listStyleType: 'none',
|
|
||||||
margin: 0,
|
|
||||||
padding: 0,
|
|
||||||
width: '100%',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<li style={{ alignItems: 'center', display: 'flex' }}>
|
|
||||||
<h3
|
|
||||||
style={{
|
|
||||||
fontSize: '20px',
|
|
||||||
fontWeight: 700,
|
|
||||||
margin: 0,
|
|
||||||
padding: '0 8px 0 0',
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
.products
|
<div className='font-semibold'>Blur Page</div>
|
||||||
</h3>
|
<span className='text-gray-600'>
|
||||||
{
|
a browser extension to hide sensitive element on page
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='w-1/2 sm:w-1/3 px-1 mb-6'>
|
||||||
|
<a
|
||||||
|
href="https://csslayout.io"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
title="CSS Layout - a collection of popular layouts and patterns made with CSS"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>CSS Layout</div>
|
||||||
|
<span className='text-gray-600'>
|
||||||
|
a collection of popular layouts and patterns made with CSS
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='w-1/2 sm:w-1/3 px-1 mb-6'>
|
||||||
|
<a
|
||||||
|
href="https://fakenumbers.io"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
title="Fake Numbers - a JavaScript library to fake a number"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>Fake Numbers</div>
|
||||||
|
<span className='text-gray-600'>a JavaScript library to fake a number</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='w-1/2 sm:w-1/3 px-1 mb-6'>
|
||||||
|
<a
|
||||||
|
href="https://formvalidation.io"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
title="FormValidation - the best validation library for JavaScript"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>Form Validation</div>
|
||||||
|
<span className='text-gray-600'>the best validation library for JavaScript</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='w-1/2 sm:w-1/3 px-1 mb-6'>
|
||||||
|
<a
|
||||||
|
href="https://htmldom.dev"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
title="HTML DOM - Common tasks of managing HTML DOM with native API"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>HTML DOM</div>
|
||||||
|
<span className='text-gray-600'>
|
||||||
|
common tasks of managing HTML DOM with vanilla JavaScript
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='w-1/2 sm:w-1/3 px-1 mb-6'>
|
||||||
|
<a
|
||||||
|
href="https://react-pdf-viewer.dev"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
title="React PDF Viewer - a PDF viewer made for React"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>React PDF Viewer</div>
|
||||||
|
<span className='text-gray-600'>a PDF viewer made for React</span>
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<ul style={{ listStyleType: 'none', margin: 0, paddingLeft: '24px' }}>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://csslayout.io"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
title="CSS Layout - a collection of popular layouts and patterns made with CSS"
|
|
||||||
>
|
|
||||||
css-layout,
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://formvalidation.io"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
title="FormValidation - the best validation library for JavaScript"
|
|
||||||
>
|
|
||||||
form-validation,
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://blur.page"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
title="BlurPage - a browser extension to hide sensitive element on page"
|
|
||||||
>
|
|
||||||
blur-page,
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="https://react-pdf-viewer.dev"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
title="React PDF Viewer - a PDF viewer made for React"
|
|
||||||
>
|
|
||||||
react-pdf-viewer,
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<li>}</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
className='border-t border-gray-400'
|
<div className='mt-6'>
|
||||||
style={{
|
<h3 className='text-xl sm:text-2xl font-semibold mb-2'>Follow me <span className='font-light text-gray-600 ml-2'>I love building products!</span></h3>
|
||||||
flex: 1,
|
<ul className='flex'>
|
||||||
fontSize: '16px',
|
<li className='flex-1'>
|
||||||
lineHeight: 1.5,
|
<a
|
||||||
padding: '24px',
|
href="https://twitter.com/nghuuphuoc"
|
||||||
}}
|
rel="noopener noreferrer"
|
||||||
>
|
style={{ textDecoration: 'none' }}
|
||||||
<ul
|
target="_blank"
|
||||||
style={{
|
|
||||||
fontWeight: 500,
|
|
||||||
lineHeight: 1.5,
|
|
||||||
listStyleType: 'none',
|
|
||||||
margin: '0 0 16px 0',
|
|
||||||
padding: 0,
|
|
||||||
width: '100%',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<li style={{ alignItems: 'center', display: 'flex' }}>
|
|
||||||
<h3
|
|
||||||
style={{
|
|
||||||
fontSize: '20px',
|
|
||||||
fontWeight: 700,
|
|
||||||
margin: 0,
|
|
||||||
padding: '0 8px 0 0',
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
.about
|
<div className='font-semibold'>Twitter</div>
|
||||||
</h3>
|
<span className='text-gray-600'>@nghuuphuoc</span>
|
||||||
{
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='flex-1'>
|
||||||
|
<a
|
||||||
|
href="https://dev.to/phuocng"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>dev.to</div>
|
||||||
|
<span className='text-gray-600'>@phuocng</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li className='flex-1'>
|
||||||
|
<a
|
||||||
|
href="https://github.com/phuoc-ng"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
<div className='font-semibold'>GitHub</div>
|
||||||
|
<span className='text-gray-600'>@phuoc-ng</span>
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<ul style={{ listStyleType: 'none', margin: 0, paddingLeft: '24px' }}>
|
|
||||||
<li style={{ alignItems: 'center', display: 'flex' }}>
|
|
||||||
<div>twitter:</div>
|
|
||||||
<a
|
|
||||||
href="https://twitter.com/nghuuphuoc"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ marginLeft: 'auto', textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
@nghuuphuoc
|
|
||||||
</a>
|
|
||||||
<div>;</div>
|
|
||||||
</li>
|
|
||||||
<li style={{ alignItems: 'center', display: 'flex' }}>
|
|
||||||
<div>dev.to:</div>
|
|
||||||
<a
|
|
||||||
href="https://dev.to/phuocng"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ marginLeft: 'auto', textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
@phuocng
|
|
||||||
</a>
|
|
||||||
<div>;</div>
|
|
||||||
</li>
|
|
||||||
<li style={{ alignItems: 'center', display: 'flex' }}>
|
|
||||||
<div>email:</div>
|
|
||||||
<a
|
|
||||||
href="mailto: me@phuoc.ng"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ marginLeft: 'auto', textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
me@phuoc.ng
|
|
||||||
</a>
|
|
||||||
<div>;</div>
|
|
||||||
</li>
|
|
||||||
<li style={{ alignItems: 'center', display: 'flex' }}>
|
|
||||||
<div>github:</div>
|
|
||||||
<a
|
|
||||||
href="https://github.com/phuoc-ng/csslayout"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ marginLeft: 'auto', textDecoration: 'none' }}
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
phuoc-ng/csslayout
|
|
||||||
</a>
|
|
||||||
<div>;</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<li>}</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className='pt-4'>
|
||||||
|
© 2020 Nguyen Huu Phuoc. All rights reserved
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -16,10 +16,10 @@ const Layout: React.FC<{}> = ({ children }) => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Github />
|
<Github />
|
||||||
<div style={{ margin: '0 auto', position: 'relative' }}>
|
<div className="ml-auto mr-auto max-w-4xl mb-12">
|
||||||
{children}
|
{children}
|
||||||
<Footer />
|
|
||||||
</div>
|
</div>
|
||||||
|
<Footer />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@@ -7,47 +7,52 @@ import React from 'react';
|
|||||||
|
|
||||||
const SubscribeForm: React.FC<{}> = () => {
|
const SubscribeForm: React.FC<{}> = () => {
|
||||||
return (
|
return (
|
||||||
<form
|
<div className='text-center mb-8'>
|
||||||
action="https://csslayout.us4.list-manage.com/subscribe/post?u=77d0bf6497a2cdbb36f08587c&id=e8a912009a"
|
<div className='mb-4'>
|
||||||
method="post"
|
Hit the Subscribe button for the latest news on my tools. No spam. Ever!
|
||||||
name="mc-embedded-subscribe-form"
|
|
||||||
target="_blank"
|
|
||||||
noValidate={true}
|
|
||||||
style={{
|
|
||||||
margin: 0,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
type="email"
|
|
||||||
name="EMAIL"
|
|
||||||
placeholder="Email address"
|
|
||||||
required={true}
|
|
||||||
style={{
|
|
||||||
border: '1px solid rgba(0, 0, 0, 0.3)',
|
|
||||||
borderBottomLeftRadius: '4px',
|
|
||||||
borderTopLeftRadius: '4px',
|
|
||||||
padding: '8px',
|
|
||||||
width: '200px',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<div style={{ left: '-5000px', position: 'absolute' }} aria-hidden="true">
|
|
||||||
<input type="text" name="b_77d0bf6497a2cdbb36f08587c_e8a912009a" tabIndex={-1} />
|
|
||||||
</div>
|
</div>
|
||||||
<button
|
<form
|
||||||
type="submit"
|
action="https://csslayout.us4.list-manage.com/subscribe/post?u=77d0bf6497a2cdbb36f08587c&id=e8a912009a"
|
||||||
name="subscribe"
|
method="post"
|
||||||
|
name="mc-embedded-subscribe-form"
|
||||||
|
target="_blank"
|
||||||
|
noValidate={true}
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: '#00449E',
|
margin: 0,
|
||||||
borderBottomRightRadius: '4px',
|
|
||||||
borderColor: 'transparent',
|
|
||||||
borderTopRightRadius: '4px',
|
|
||||||
color: '#FFF',
|
|
||||||
padding: '8px 16px',
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Subscribe
|
<input
|
||||||
</button>
|
type="email"
|
||||||
</form>
|
name="EMAIL"
|
||||||
|
placeholder="Email address"
|
||||||
|
required={true}
|
||||||
|
style={{
|
||||||
|
border: '1px solid rgba(0, 0, 0, 0.3)',
|
||||||
|
borderBottomLeftRadius: '4px',
|
||||||
|
borderTopLeftRadius: '4px',
|
||||||
|
padding: '8px',
|
||||||
|
width: '200px',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div style={{ left: '-5000px', position: 'absolute' }} aria-hidden="true">
|
||||||
|
<input type="text" name="b_77d0bf6497a2cdbb36f08587c_e8a912009a" tabIndex={-1} />
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
type="submit"
|
||||||
|
name="subscribe"
|
||||||
|
style={{
|
||||||
|
backgroundColor: '#00449E',
|
||||||
|
borderBottomRightRadius: '4px',
|
||||||
|
borderColor: 'transparent',
|
||||||
|
borderTopRightRadius: '4px',
|
||||||
|
color: '#FFF',
|
||||||
|
padding: '8px 16px',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Subscribe
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@ import Heading from '../components/Heading';
|
|||||||
import Pattern from '../constants/Pattern';
|
import Pattern from '../constants/Pattern';
|
||||||
import useDocumentTitle from '../hooks/useDocumentTitle';
|
import useDocumentTitle from '../hooks/useDocumentTitle';
|
||||||
import Layout from '../layouts/Layout';
|
import Layout from '../layouts/Layout';
|
||||||
import ProductHuntBadge from '../layouts/ProductHuntBadge';
|
|
||||||
|
|
||||||
const ExplorePage = () => {
|
const ExplorePage = () => {
|
||||||
useDocumentTitle('CSS Layout ∙ Explore');
|
useDocumentTitle('CSS Layout ∙ Explore');
|
||||||
@@ -52,16 +51,12 @@ const ExplorePage = () => {
|
|||||||
<div className='mb-5' style={{ textAlign: 'center' }}>
|
<div className='mb-5' style={{ textAlign: 'center' }}>
|
||||||
All covers you see in this page are made with CSS only. Inspect them! 🎉
|
All covers you see in this page are made with CSS only. Inspect them! 🎉
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='flex justify-center pb-5'>
|
|
||||||
<ProductHuntBadge />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<Heading title="Layout" />
|
<Heading title="Layout" />
|
||||||
|
|
||||||
<div className='xl:border-l xl:border-r xl:border-gray-400' style={{ display: 'flex', flexWrap: 'wrap', padding: '32px' }}>
|
<div className='xl:border-l xl:border-r xl:border-gray-400 flex flex-wrap p-8'>
|
||||||
<CoverCard pattern={Pattern.CardLayout} />
|
<CoverCard pattern={Pattern.CardLayout} />
|
||||||
<CoverCard pattern={Pattern.HolyGrail} />
|
<CoverCard pattern={Pattern.HolyGrail} />
|
||||||
<CoverCard pattern={Pattern.SameHeightColumns} />
|
<CoverCard pattern={Pattern.SameHeightColumns} />
|
||||||
@@ -77,7 +72,7 @@ const ExplorePage = () => {
|
|||||||
<section>
|
<section>
|
||||||
<Heading title="Navigation" />
|
<Heading title="Navigation" />
|
||||||
|
|
||||||
<div className='xl:border-l xl:border-r xl:border-gray-400' style={{ display: 'flex', flexWrap: 'wrap', padding: '32px' }}>
|
<div className='xl:border-l xl:border-r xl:border-gray-400 flex flex-wrap p-8'>
|
||||||
<CoverCard pattern={Pattern.Breadcrumb} />
|
<CoverCard pattern={Pattern.Breadcrumb} />
|
||||||
<CoverCard pattern={Pattern.CircularNavigation} />
|
<CoverCard pattern={Pattern.CircularNavigation} />
|
||||||
<CoverCard pattern={Pattern.DotNavigation} />
|
<CoverCard pattern={Pattern.DotNavigation} />
|
||||||
@@ -98,7 +93,7 @@ const ExplorePage = () => {
|
|||||||
<section>
|
<section>
|
||||||
<Heading title="Input" />
|
<Heading title="Input" />
|
||||||
|
|
||||||
<div className='xl:border-l xl:border-r xl:border-gray-400' style={{ display: 'flex', flexWrap: 'wrap', padding: '32px' }}>
|
<div className='xl:border-l xl:border-r xl:border-gray-400 flex flex-wrap p-8'>
|
||||||
<CoverCard pattern={Pattern.ButtonWithIcon} />
|
<CoverCard pattern={Pattern.ButtonWithIcon} />
|
||||||
<CoverCard pattern={Pattern.Chip} />
|
<CoverCard pattern={Pattern.Chip} />
|
||||||
<CoverCard pattern={Pattern.CustomCheckboxButton} />
|
<CoverCard pattern={Pattern.CustomCheckboxButton} />
|
||||||
@@ -121,7 +116,7 @@ const ExplorePage = () => {
|
|||||||
<section>
|
<section>
|
||||||
<Heading title="Display" />
|
<Heading title="Display" />
|
||||||
|
|
||||||
<div className='xl:border-l xl:border-r xl:border-gray-400' style={{ display: 'flex', flexWrap: 'wrap', padding: '32px' }}>
|
<div className='xl:border-l xl:border-r xl:border-gray-400 flex flex-wrap p-8'>
|
||||||
<CoverCard pattern={Pattern.Accordion} />
|
<CoverCard pattern={Pattern.Accordion} />
|
||||||
<CoverCard pattern={Pattern.ArrowButtons} />
|
<CoverCard pattern={Pattern.ArrowButtons} />
|
||||||
<CoverCard pattern={Pattern.Avatar} />
|
<CoverCard pattern={Pattern.Avatar} />
|
||||||
@@ -171,7 +166,7 @@ const ExplorePage = () => {
|
|||||||
<section>
|
<section>
|
||||||
<Heading title="Feedback" />
|
<Heading title="Feedback" />
|
||||||
|
|
||||||
<div className='xl:border-l xl:border-r xl:border-gray-400' style={{ display: 'flex', flexWrap: 'wrap', padding: '32px' }}>
|
<div className='xl:border-b xl:border-l xl:border-r xl:border-gray-400 flex flex-wrap p-8'>
|
||||||
<CoverCard pattern={Pattern.Modal} />
|
<CoverCard pattern={Pattern.Modal} />
|
||||||
<CoverCard pattern={Pattern.Notification} />
|
<CoverCard pattern={Pattern.Notification} />
|
||||||
<CoverCard pattern={Pattern.PopoverArrow} />
|
<CoverCard pattern={Pattern.PopoverArrow} />
|
||||||
|
@@ -13,7 +13,6 @@ import CoverCard from '../components/CoverCard';
|
|||||||
import Pattern from '../constants/Pattern';
|
import Pattern from '../constants/Pattern';
|
||||||
import useDocumentTitle from '../hooks/useDocumentTitle';
|
import useDocumentTitle from '../hooks/useDocumentTitle';
|
||||||
import Layout from '../layouts/Layout';
|
import Layout from '../layouts/Layout';
|
||||||
import ProductHuntBadge from '../layouts/ProductHuntBadge';
|
|
||||||
import MadeOf from './MadeOf';
|
import MadeOf from './MadeOf';
|
||||||
|
|
||||||
const HomePage = () => {
|
const HomePage = () => {
|
||||||
@@ -86,10 +85,6 @@ const HomePage = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='flex justify-center' style={{ margin: '24px 0' }}>
|
|
||||||
<ProductHuntBadge />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div
|
<div
|
||||||
className="hljs"
|
className="hljs"
|
||||||
style={{
|
style={{
|
||||||
|
Reference in New Issue
Block a user