Skip to content

Commit

Permalink
feat: add collapse & list components
Browse files Browse the repository at this point in the history
  • Loading branch information
abelflopes committed Nov 2, 2023
1 parent 566342f commit f3701be
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 0 deletions.
18 changes: 18 additions & 0 deletions packages/components/all/src/collapse/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import React from "react";
import styles from "./styles/index.module.scss";

export interface CollapseProps extends React.DetailsHTMLAttributes<HTMLDetailsElement> {
header: NonNullable<React.ReactNode>;
}

export const Collapse = ({
header,
children,
className,
...otherProps
}: Readonly<CollapseProps>): React.ReactElement => (
<details {...otherProps}>
<summary className={styles.header}>{header}</summary>
{children}
</details>
);
4 changes: 4 additions & 0 deletions packages/components/all/src/collapse/styles/index.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.header {
appearance: auto;
cursor: pointer;
}
4 changes: 4 additions & 0 deletions packages/components/all/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ export * from "./card";
export * from "./container";

export * from "./chip";

export * from "./collapse";

export * from "./list";
23 changes: 23 additions & 0 deletions packages/components/all/src/list/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import React from "react";
import styles from "./styles/index.module.scss";
import classNames from "classnames";

export interface ListProps extends Omit<React.HTMLAttributes<HTMLUListElement>, "children"> {
skin?: "bordered";
items: React.ReactNode[];
}

export const List = ({
skin,
items,
className,
...otherProps
}: Readonly<ListProps>): React.ReactElement => (
<ul className={classNames(styles.root, skin && styles[skin], className)} {...otherProps}>
{items.map((item, key) => (
<li key={`${item?.toString()}-${key.toString()}`} className={styles.item}>
{item}
</li>
))}
</ul>
);
24 changes: 24 additions & 0 deletions packages/components/all/src/list/styles/index.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
@import "@rck/theme";

.root {
--border-color: transparent;

margin: 0;
padding: 0;
list-style: none;
border: solid 1px var(--border-color);
border-radius: get-spacing(2);
overflow: hidden;
}

.item {
padding: get-spacing(2);

&:not(:first-child) {
border-top: solid 1px var(--border-color);
}
}

.bordered {
--border-color: #{get-color(neutral100)};
}

0 comments on commit f3701be

Please sign in to comment.