Skip to content

Commit f3701be

Browse files
committed
feat: add collapse & list components
1 parent 566342f commit f3701be

File tree

5 files changed

+73
-0
lines changed

5 files changed

+73
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React from "react";
2+
import styles from "./styles/index.module.scss";
3+
4+
export interface CollapseProps extends React.DetailsHTMLAttributes<HTMLDetailsElement> {
5+
header: NonNullable<React.ReactNode>;
6+
}
7+
8+
export const Collapse = ({
9+
header,
10+
children,
11+
className,
12+
...otherProps
13+
}: Readonly<CollapseProps>): React.ReactElement => (
14+
<details {...otherProps}>
15+
<summary className={styles.header}>{header}</summary>
16+
{children}
17+
</details>
18+
);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.header {
2+
appearance: auto;
3+
cursor: pointer;
4+
}

packages/components/all/src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ export * from "./card";
99
export * from "./container";
1010

1111
export * from "./chip";
12+
13+
export * from "./collapse";
14+
15+
export * from "./list";
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import React from "react";
2+
import styles from "./styles/index.module.scss";
3+
import classNames from "classnames";
4+
5+
export interface ListProps extends Omit<React.HTMLAttributes<HTMLUListElement>, "children"> {
6+
skin?: "bordered";
7+
items: React.ReactNode[];
8+
}
9+
10+
export const List = ({
11+
skin,
12+
items,
13+
className,
14+
...otherProps
15+
}: Readonly<ListProps>): React.ReactElement => (
16+
<ul className={classNames(styles.root, skin && styles[skin], className)} {...otherProps}>
17+
{items.map((item, key) => (
18+
<li key={`${item?.toString()}-${key.toString()}`} className={styles.item}>
19+
{item}
20+
</li>
21+
))}
22+
</ul>
23+
);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
@import "@rck/theme";
2+
3+
.root {
4+
--border-color: transparent;
5+
6+
margin: 0;
7+
padding: 0;
8+
list-style: none;
9+
border: solid 1px var(--border-color);
10+
border-radius: get-spacing(2);
11+
overflow: hidden;
12+
}
13+
14+
.item {
15+
padding: get-spacing(2);
16+
17+
&:not(:first-child) {
18+
border-top: solid 1px var(--border-color);
19+
}
20+
}
21+
22+
.bordered {
23+
--border-color: #{get-color(neutral100)};
24+
}

0 commit comments

Comments
 (0)