diff --git a/client/constants/Pattern.ts b/client/constants/Pattern.ts
index 75e92a7..82c17f1 100644
--- a/client/constants/Pattern.ts
+++ b/client/constants/Pattern.ts
@@ -8,6 +8,7 @@ enum Pattern {
CircularNavigation = 'Circular navigation',
CookieBanner = 'Cookie banner',
CornerRibbon = 'Corner ribbon',
+ CustomCheckboxButton = 'Custom checkbox button',
CustomRadioButton = 'Custom radio button',
DockedAtCorner = 'Docked at corner',
DotLeader = 'Dot leader',
diff --git a/client/pages/ExplorePage.tsx b/client/pages/ExplorePage.tsx
index 08ae0cb..19bde05 100644
--- a/client/pages/ExplorePage.tsx
+++ b/client/pages/ExplorePage.tsx
@@ -92,6 +92,7 @@ const ExplorePage = () => {
+
diff --git a/client/patterns/custom-checkbox-button/Cover.tsx b/client/patterns/custom-checkbox-button/Cover.tsx
new file mode 100644
index 0000000..0b3a5f6
--- /dev/null
+++ b/client/patterns/custom-checkbox-button/Cover.tsx
@@ -0,0 +1,79 @@
+import React from 'react';
+
+import Frame from '../../placeholders/Frame';
+import Rectangle from '../../placeholders/Rectangle';
+import Square from '../../placeholders/Square';
+
+const Cover: React.FC<{}> = () => {
+ return (
+
+
+
+ );
+};
+
+export default Cover;
diff --git a/client/patterns/custom-checkbox-button/Details.tsx b/client/patterns/custom-checkbox-button/Details.tsx
new file mode 100644
index 0000000..cda0356
--- /dev/null
+++ b/client/patterns/custom-checkbox-button/Details.tsx
@@ -0,0 +1,159 @@
+import React, { useState } from 'react';
+
+import RelatedPatterns from '../../components/RelatedPatterns';
+import Pattern from '../../constants/Pattern';
+import DetailsLayout from '../../layouts/DetailsLayout';
+import BrowserFrame from '../../placeholders/BrowserFrame';
+import Rectangle from '../../placeholders/Rectangle';
+
+interface CheckboxProps {
+ isChecked: boolean;
+ value: string;
+}
+
+const Details: React.FC<{}> = () => {
+ const Checkbox: React.FC = ({ isChecked, value, children }) => {
+ const [checked, setChecked] = useState(isChecked);
+ const click = () => setChecked((c) => !c);
+
+ return (
+
+ );
+ };
+
+ return (
+
+
+ )}
+ source={`
+
+ );
+};
+
+export default Details;
diff --git a/client/patterns/custom-radio-button/Details.tsx b/client/patterns/custom-radio-button/Details.tsx
index c83113a..eebbc1b 100644
--- a/client/patterns/custom-radio-button/Details.tsx
+++ b/client/patterns/custom-radio-button/Details.tsx
@@ -1,5 +1,7 @@
import React, { useState } from 'react';
+import RelatedPatterns from '../../components/RelatedPatterns';
+import Pattern from '../../constants/Pattern';
import DetailsLayout from '../../layouts/DetailsLayout';
import BrowserFrame from '../../placeholders/BrowserFrame';
import Rectangle from '../../placeholders/Rectangle';
@@ -139,7 +141,7 @@ const Details: React.FC<{}> = () => {
width: 16px;
/* For selected radio */
- background-color: rgba(0, 0, 0, 0.3);
+ background-color: #00449E;
/* For not selected radio */
background-color: transparent;
@@ -152,6 +154,7 @@ const Details: React.FC<{}> = () => {
`}
/>
+
);
};
diff --git a/client/placeholders/Square.tsx b/client/placeholders/Square.tsx
index e35d9df..8ced485 100644
--- a/client/placeholders/Square.tsx
+++ b/client/placeholders/Square.tsx
@@ -1,14 +1,18 @@
import React from 'react';
interface SquareProps {
+ backgroundColor?: string;
size?: number;
}
-const Square: React.FC = ({ size = 8 }) => {
+const Square: React.FC = ({
+ backgroundColor = 'rgba(0, 0, 0, 0.3)',
+ size = 8,
+}) => {
return (
https://csslayout.io/patterns/circular-navigation
https://csslayout.io/patterns/cookie-banner
https://csslayout.io/patterns/corner-ribbon
+ https://csslayout.io/patterns/custom-checkbox-button
https://csslayout.io/patterns/custom-radio-button
https://csslayout.io/patterns/docked-at-corner
https://csslayout.io/patterns/dot-leader