Skip to content

Commit 81eb716

Browse files
committed
feat(table): support interactive and selected ui, adjust font and spacings
1 parent bb0290a commit 81eb716

File tree

5 files changed

+43
-9
lines changed

5 files changed

+43
-9
lines changed

packages/components/base/src/table/THead/index.module.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// td / th
1212
> * > * {
13-
background-color: theme.get-color(neutral-light-300);
13+
background-color: theme.get-color(neutral-light-200);
1414

1515
&:first-child {
1616
border-top-left-radius: inherit;

packages/components/base/src/table/Table/index.module.scss

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,31 +85,35 @@
8585
}
8686

8787
.skin_bordered {
88-
@include scss-utils.define-css-var(table, border-color, theme.get-color(neutral-light-400-solid));
88+
@include scss-utils.define-css-var(table, border-color, theme.get-color(neutral-light-300-solid));
8989
}
9090

9191
// Spacing
9292

9393
.spacing_default {
94-
@include scss-utils.define-css-var(table, spacing, theme.get-spacing());
94+
@include scss-utils.define-css-var(table, spacing, theme.get-spacing(1.5));
95+
@include scss-utils.define-css-var(table, min-height, theme.get-spacing(5));
9596
}
9697

9798
.spacing_compact {
98-
@include scss-utils.define-css-var(table, spacing, theme.get-spacing(0.5));
99+
@include scss-utils.define-css-var(table, spacing, theme.get-spacing(1));
100+
@include scss-utils.define-css-var(table, min-height, theme.get-spacing(4));
99101
}
100102

101103
// Table
102104

103105
.table {
104-
@include text.text-base;
106+
@include text.text-base(small);
105107

106108
width: 100%;
107109
border-radius: inherit;
108110
border-collapse: collapse;
109111

110112
td,
111113
th {
112-
padding: scss-utils.get-css-var(table, spacing);
114+
box-sizing: border-box;
115+
height: scss-utils.get-css-var(table, min-height);
116+
padding: calc(scss-utils.get-css-var(table, spacing) / 2) scss-utils.get-css-var(table, spacing);
113117

114118
&:not(:last-child) {
115119
border-right: solid scss-utils.get-css-var(spacing, border)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@use "@react-ck/theme";
2+
3+
.selected {
4+
background-color: theme.get-color(highlight-primary-light);
5+
}
6+
7+
.interactive {
8+
cursor: pointer;
9+
}
Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,28 @@
11
import React from "react";
2+
import classNames from "classnames";
3+
import styles from "./index.module.scss";
24

35
/** Props for configuring a table row */
4-
export type TrProps = React.HTMLAttributes<HTMLTableRowElement>;
6+
export type TrProps = React.HTMLAttributes<HTMLTableRowElement> & {
7+
/** Whether the row is selected */
8+
selected?: boolean;
9+
/** Whether the row is interactive */
10+
interactive?: boolean;
11+
};
512

613
/** Standard table row component */
7-
export const Tr = (props: Readonly<TrProps>): React.ReactElement => <tr {...props} />;
14+
export const Tr = ({
15+
selected = false,
16+
interactive = false,
17+
className,
18+
...props
19+
}: Readonly<TrProps>): React.ReactElement => (
20+
<tr
21+
className={classNames(
22+
selected && styles.selected,
23+
interactive && styles.interactive,
24+
className,
25+
)}
26+
{...props}
27+
/>
28+
);

packages/docs/stories/src/generic-table.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const children = [
3434
</Table.Thead>,
3535
<Table.TBody key="body">
3636
{Object.keys(Array.from({ length: rows })).map((r) => (
37-
<Table.Tr key={r}>
37+
<Table.Tr key={r} selected={r === "1"} interactive={Number(r) < rows / 2}>
3838
{Object.keys(Array.from({ length: columns })).map((i) => (
3939
<Table.Td key={i}>{faker.company.catchPhraseDescriptor()}</Table.Td>
4040
))}

0 commit comments

Comments
 (0)