Skip to content

Commit

Permalink
chore: implement accordions
Browse files Browse the repository at this point in the history
  • Loading branch information
epiqueras committed Sep 1, 2020
1 parent e4283ef commit c8e1d07
Show file tree
Hide file tree
Showing 11 changed files with 159 additions and 2 deletions.
9 changes: 7 additions & 2 deletions .eslintrc.js
Expand Up @@ -298,8 +298,13 @@ module.exports = {
// Regex Plugin
"regex/invalid": [
"error",
// Don't use trailing slashes or cyclic index imports. Don't use numerical strings. Don't use "styled" components. Don't disable rules.
['import.*(/|\\.)";', '"\\d+"', "Style[d]", "eslint\\-disable"],
[
'import.*(/|\\.)";', // Don't use trailing slashes or cyclic index imports.
'"\\d+"', // Don't use numerical strings.
"[^\\d]0\\px", // Don't use pixels unit for zero values.
"Style[d]", // Don't use "styled" components.
"eslint\\-disable", // Don't disable rules.
],
],

// GraphQL Plugin
Expand Down
2 changes: 2 additions & 0 deletions _pages/profile/[id]/index.js
@@ -1,6 +1,7 @@
import { Card, Text, useQuery } from "@kleros/components";
import { graphql } from "relay-hooks";

import SubmissionDetailsAccordion from "./submission-details-accordion";
import SubmissionDetailsCard from "./submission-details-card";

import { submissionStatusEnum } from "data";
Expand Down Expand Up @@ -36,6 +37,7 @@ export default function ProfileWithID() {
{props?.submission && (
<SubmissionDetailsCard submission={props.submission} />
)}
<SubmissionDetailsAccordion />
</>
);
}
Expand Down
@@ -0,0 +1,17 @@
import {
AccordionItem,
AccordionItemHeading,
AccordionItemPanel,
Text,
} from "@kleros/components";

export default function AppealAccordionItem() {
return (
<AccordionItem>
<AccordionItemHeading>Appeal</AccordionItemHeading>
<AccordionItemPanel>
<Text>Appeal.</Text>
</AccordionItemPanel>
</AccordionItem>
);
}
@@ -0,0 +1,17 @@
import {
AccordionItem,
AccordionItemHeading,
AccordionItemPanel,
Text,
} from "@kleros/components";

export default function EvidenceAccordionItem() {
return (
<AccordionItem>
<AccordionItemHeading>Evidence</AccordionItemHeading>
<AccordionItemPanel>
<Text>Evidence.</Text>
</AccordionItemPanel>
</AccordionItem>
);
}
15 changes: 15 additions & 0 deletions _pages/profile/[id]/submission-details-accordion/index.js
@@ -0,0 +1,15 @@
import { Accordion } from "@kleros/components";

import AppealAccordionItem from "./appeal-accordion-item";
import EvidenceAccordionItem from "./evidence-accordion-item";
import VotingHistoryAccordionItem from "./voting-history-accordion-item";

export default function SubmissionDetailsAccordion() {
return (
<Accordion>
<AppealAccordionItem />
<EvidenceAccordionItem />
<VotingHistoryAccordionItem />
</Accordion>
);
}
@@ -0,0 +1,17 @@
import {
AccordionItem,
AccordionItemHeading,
AccordionItemPanel,
Text,
} from "@kleros/components";

export default function VotingHistoryAccordionItem() {
return (
<AccordionItem>
<AccordionItemHeading>Voting History</AccordionItemHeading>
<AccordionItemPanel>
<Text>Voting History.</Text>
</AccordionItemPanel>
</AccordionItem>
);
}
51 changes: 51 additions & 0 deletions components/accordion.js
@@ -0,0 +1,51 @@
import {
Accordion as _Accordion,
AccordionItem as _AccordionItem,
AccordionItemButton as _AccordionItemButton,
AccordionItemHeading as _AccordionItemHeading,
AccordionItemPanel as _AccordionItemPanel,
} from "react-accessible-accordion";
import { Box } from "theme-ui";

export default function Accordion({
allowMultipleExpanded = true,
allowZeroExpanded = true,
...rest
}) {
return (
<Box
as={(props) => (
<_Accordion
allowMultipleExpanded={allowMultipleExpanded}
allowZeroExpanded={allowZeroExpanded}
{...rest}
{...props}
/>
)}
{...rest}
/>
);
}

export function AccordionItem(props) {
return <Box as={_AccordionItem} variant="accordion.item" {...props} />;
}

export function AccordionItemHeading(props) {
return (
<Box
as={({ children, ...rest }) => (
<_AccordionItemHeading {...props} {...rest}>
<Box as={_AccordionItemButton} variant="accordion.heading">
{children}
</Box>
</_AccordionItemHeading>
)}
{...props}
/>
);
}

export function AccordionItemPanel(props) {
return <Box as={_AccordionItemPanel} variant="accordion.panel" {...props} />;
}
6 changes: 6 additions & 0 deletions components/index.js
@@ -1,5 +1,11 @@
export { Box, Flex } from "theme-ui";

export {
default as Accordion,
AccordionItem,
AccordionItemHeading,
AccordionItemPanel,
} from "./accordion";
export { default as AccountSettingsPopup } from "./account-settings-popup";
export { default as ArchonProvider, useArchon } from "./archon-provider";
export { default as Button } from "./button";
Expand Down
21 changes: 21 additions & 0 deletions components/theme-provider.js
Expand Up @@ -60,6 +60,27 @@ const theme = merge(merge(base, toTheme(typographyTheme)), {
},

// Components
accordion: {
item: {
marginY: 2,
},
heading: {
backgroundColor: "accent",
borderRadius: 3,
color: "background",
fontWeight: "bold",
paddingX: 2,
paddingY: 1,
},
panel: {
backgroundColor: "background",
bordeRadius: 3,
boxShadow: "0 6px 90px rgba(255, 153, 0, 0.25)",
fontSize: 1,
paddingX: 4,
paddingY: 3,
},
},
buttons: {
primary: {
borderRadius: 300,
Expand Down
5 changes: 5 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Expand Up @@ -45,6 +45,7 @@
"next": "^9.5.1",
"path-to-regexp": "^6.1.0",
"react": "^16.13.1",
"react-accessible-accordion": "^3.3.3",
"react-dom": "^16.13.1",
"react-loading-skeleton": "^2.1.1",
"react-player": "^2.6.1",
Expand Down

0 comments on commit c8e1d07

Please sign in to comment.