diff --git a/client/constants/Pattern.ts b/client/constants/Pattern.ts
index 544d891..abb180c 100644
--- a/client/constants/Pattern.ts
+++ b/client/constants/Pattern.ts
@@ -18,6 +18,7 @@ enum Pattern {
CircularNavigation = 'Circular navigation',
CloseButton = 'Close button',
ColorSwatch = 'Color swatch',
+ ConcaveCorners = 'Concave corners',
CookieBanner = 'Cookie banner',
CornerRibbon = 'Corner ribbon',
CurvedBackground = 'Curved background',
diff --git a/client/pages/ExplorePage.tsx b/client/pages/ExplorePage.tsx
index 8eb088f..f0c646a 100644
--- a/client/pages/ExplorePage.tsx
+++ b/client/pages/ExplorePage.tsx
@@ -120,6 +120,7 @@ const ExplorePage = () => {
+
diff --git a/client/patterns/concave-corners/Cover.tsx b/client/patterns/concave-corners/Cover.tsx
new file mode 100644
index 0000000..22b72b2
--- /dev/null
+++ b/client/patterns/concave-corners/Cover.tsx
@@ -0,0 +1,76 @@
+/** * A collection of popular layouts and patterns made with CSS (https://csslayout.io)
+ * (c) 2019 - 2021 Nguyen Huu Phuoc
+ */
+
+import * as React from 'react';
+
+import Frame from '../../placeholders/Frame';
+
+const Cover: React.FC<{}> = () => {
+ return (
+
+
+
+ );
+};
+
+export default Cover;
diff --git a/client/patterns/concave-corners/Details.tsx b/client/patterns/concave-corners/Details.tsx
new file mode 100644
index 0000000..0e9c23b
--- /dev/null
+++ b/client/patterns/concave-corners/Details.tsx
@@ -0,0 +1,139 @@
+/**
+ * A collection of popular layouts and patterns made with CSS (https://csslayout.io)
+ * (c) 2019 - 2021 Nguyen Huu Phuoc
+ */
+
+import * as React from 'react';
+import { Helmet } from 'react-helmet';
+
+import RelatedPatterns from '../../components/RelatedPatterns';
+import Pattern from '../../constants/Pattern';
+import DetailsLayout from '../../layouts/DetailsLayout';
+import BrowserFrame from '../../placeholders/BrowserFrame';
+
+import './concave-corners.css';
+
+const Details: React.FC<{}> = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ...
+
+`}
+css={`
+:root {
+ --concave-corners-background: rgba(0, 0, 0, .3);
+ --concave-corners-size: 1rem;
+}
+
+.concave-corners {
+ background-color: var(--concave-corners-background);
+
+ /* Used to position the corners */
+ position: relative;
+
+ /* Misc */
+ height: 100%;
+}
+
+.concave-corners__corner {
+ /* Absolute position */
+ position: absolute;
+
+ /* Size */
+ height: var(--concave-corners-size);
+ width: var(--concave-corners-size);
+
+ background: #FFF;
+}
+
+.concave-corners__corner--tl {
+ /* Position */
+ left: 0;
+ top: 0;
+
+ /* Border radius */
+ border-radius: 0 0 var(--concave-corners-size) 0;
+}
+
+.concave-corners__corner--tr {
+ /* Position */
+ right: 0;
+ top: 0;
+
+ /* Border radius */
+ border-radius: 0 0 0 var(--concave-corners-size);
+}
+
+.concave-corners__corner--bl {
+ /* Position */
+ bottom: 0;
+ left: 0;
+
+ /* Border radius */
+ border-radius: 0 var(--concave-corners-size) 0 0;
+}
+
+.concave-corners__corner--br {
+ /* Position */
+ bottom: 0;
+ right: 0;
+
+ /* Border radius */
+ border-radius: var(--concave-corners-size) 0 0 0;
+}
+`}
+ >
+
+
+
+
+
+ );
+};
+
+export default Details;
diff --git a/client/patterns/concave-corners/concave-corners.css b/client/patterns/concave-corners/concave-corners.css
new file mode 100644
index 0000000..c7155ae
--- /dev/null
+++ b/client/patterns/concave-corners/concave-corners.css
@@ -0,0 +1,66 @@
+/**
+ * A collection of popular layouts and patterns made with CSS (https://csslayout.io)
+ * (c) 2019 - 2021 Nguyen Huu Phuoc
+ */
+
+:root {
+ --concave-corners-background: rgba(0, 0, 0, .3);
+ --concave-corners-size: 1rem;
+}
+
+.concave-corners {
+ background-color: var(--concave-corners-background);
+
+ /* Used to position the corners */
+ position: relative;
+
+ /* Misc */
+ height: 100%;
+}
+
+.concave-corners__corner {
+ /* Absolute position */
+ position: absolute;
+
+ /* Size */
+ height: var(--concave-corners-size);
+ width: var(--concave-corners-size);
+
+ background: #FFF;
+}
+
+.concave-corners__corner--tl {
+ /* Position */
+ left: 0;
+ top: 0;
+
+ /* Border radius */
+ border-radius: 0 0 var(--concave-corners-size) 0;
+}
+
+.concave-corners__corner--tr {
+ /* Position */
+ right: 0;
+ top: 0;
+
+ /* Border radius */
+ border-radius: 0 0 0 var(--concave-corners-size);
+}
+
+.concave-corners__corner--bl {
+ /* Position */
+ bottom: 0;
+ left: 0;
+
+ /* Border radius */
+ border-radius: 0 var(--concave-corners-size) 0 0;
+}
+
+.concave-corners__corner--br {
+ /* Position */
+ bottom: 0;
+ right: 0;
+
+ /* Border radius */
+ border-radius: var(--concave-corners-size) 0 0 0;
+}
\ No newline at end of file
diff --git a/client/patterns/inverted-corners/Details.tsx b/client/patterns/inverted-corners/Details.tsx
index aa9ad02..f4d6708 100644
--- a/client/patterns/inverted-corners/Details.tsx
+++ b/client/patterns/inverted-corners/Details.tsx
@@ -7,6 +7,7 @@ import * as React from 'react';
import { Helmet } from 'react-helmet';
import Heading from '../../components/Heading';
+import RelatedPatterns from '../../components/RelatedPatterns';
import Pattern from '../../constants/Pattern';
import DetailsLayout from '../../layouts/DetailsLayout';
import BrowserFrame from '../../placeholders/BrowserFrame';
@@ -94,6 +95,8 @@ css={`
Speech Bubble
+
+
);
};
diff --git a/client/placeholders/BrowserFrame.tsx b/client/placeholders/BrowserFrame.tsx
index acae7c8..6c4ef83 100644
--- a/client/placeholders/BrowserFrame.tsx
+++ b/client/placeholders/BrowserFrame.tsx
@@ -16,8 +16,12 @@ interface BrowserFrameProps {
const BrowserFrame: React.FC = ({ children, css, html }) => {
return (
<>
-
-
+
+
+
+
+
+
{children}
diff --git a/client/placeholders/browserFrame.css b/client/placeholders/browserFrame.css
index 48201d0..188aaac 100644
--- a/client/placeholders/browserFrame.css
+++ b/client/placeholders/browserFrame.css
@@ -7,4 +7,8 @@
border: 1px solid rgba(0, 0, 0, 0.2);
height: 32rem;
overflow: auto;
+}
+
+.demo__html {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.5);
}
\ No newline at end of file
diff --git a/public/assets/patterns/concave-corners.png b/public/assets/patterns/concave-corners.png
new file mode 100644
index 0000000..db2b111
Binary files /dev/null and b/public/assets/patterns/concave-corners.png differ
diff --git a/public/sitemap.xml b/public/sitemap.xml
index dc97d3b..81de73a 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -16,6 +16,8 @@
https://csslayout.io/patterns/chip
https://csslayout.io/patterns/circular-navigation
https://csslayout.io/patterns/close-button
+ https://csslayout.io/patterns/color-swatch
+ https://csslayout.io/patterns/concave-corners
https://csslayout.io/patterns/cookie-banner
https://csslayout.io/patterns/corner-ribbon
https://csslayout.io/patterns/curved-background
@@ -41,6 +43,7 @@
https://csslayout.io/patterns/holy-grail
https://csslayout.io/patterns/initial-avatar
https://csslayout.io/patterns/input-addon
+ https://csslayout.io/patterns/inverted-corners
https://csslayout.io/patterns/keyboard-shortcut
https://csslayout.io/patterns/layered-card
https://csslayout.io/patterns/lined-paper