add PulseCard component.
This commit is contained in:
parent
4cdc73ca90
commit
346566b147
25
src/page-components/pattern-editor/PulseCard.module.css
Normal file
25
src/page-components/pattern-editor/PulseCard.module.css
Normal file
|
@ -0,0 +1,25 @@
|
|||
@layer pages {
|
||||
.pulse_card {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: calc(var(--spacing) * 2);
|
||||
color: var(--color-on-surface);
|
||||
background-color: var(--color-surface);
|
||||
border-radius: calc(var(--border-radius) * 2);
|
||||
padding: 0;
|
||||
&.selected {
|
||||
background-color: color-mix(in oklch, var(--color-on-surface) 18%, transparent);
|
||||
}
|
||||
.order {
|
||||
padding: calc(var(--spacing) * 2) calc(var(--spacing) * 3);
|
||||
background-color: var(--color-secondary-container);
|
||||
color: var(--color-on-secondary-container);
|
||||
border-top-left-radius: calc(var(--border-radius) * 2);
|
||||
border-bottom-left-radius: calc(var(--border-radius) * 2);
|
||||
}
|
||||
.offset {
|
||||
padding: calc(var(--spacing) * 2) calc(var(--spacing) * 3);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,12 +1,34 @@
|
|||
import { FC } from 'react';
|
||||
import cx from 'clsx';
|
||||
import { useAtom } from 'jotai';
|
||||
import { FC, useCallback } from 'react';
|
||||
import { Pulse } from '../../context/pattern-model';
|
||||
import { SelectedPulseIdAtom } from '../../context/Patterns';
|
||||
import styles from './PulseCard.module.css';
|
||||
|
||||
type PulseCardProps = {
|
||||
pulse: Pulse;
|
||||
};
|
||||
|
||||
const PulseCard: FC<PulseCardProps> = ({ pulse }) => {
|
||||
return <div></div>;
|
||||
const [selected, setSelected] = useAtom(SelectedPulseIdAtom);
|
||||
|
||||
const handleSelect = useCallback(() => {
|
||||
if (selected === pulse.id) {
|
||||
setSelected(null);
|
||||
} else {
|
||||
setSelected(pulse.id);
|
||||
}
|
||||
}, [pulse, selected]);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={cx(styles.pulse_card, selected === pulse.id && styles.selected)}
|
||||
onClick={handleSelect}>
|
||||
<div className={styles.order}>{pulse.order.toString().padStart(3, '0')}</div>
|
||||
<div className="spacer" />
|
||||
<div className={styles.offset}>+ {pulse.offset} ms</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default PulseCard;
|
||||
|
|
Loading…
Reference in New Issue
Block a user