diff --git a/packages/frontend/component/src/ui/slider/index.css.ts b/packages/frontend/component/src/ui/slider/index.css.ts index d83ac9c9df..4d2811098e 100644 --- a/packages/frontend/component/src/ui/slider/index.css.ts +++ b/packages/frontend/component/src/ui/slider/index.css.ts @@ -1,16 +1,19 @@ import { cssVarV2 } from '@toeverything/theme/v2'; import { style } from '@vanilla-extract/css'; -export const sliderContainerStyle = style({ - position: 'relative', - width: '250px', - height: '16px', -}); - export const trackStyle = style({ width: '100%', height: '1px', - backgroundColor: cssVarV2('layer/border'), + position: 'relative', + display: 'flex', + alignItems: 'center', + padding: '12px 0', + cursor: 'pointer', +}); +export const fakeTrackStyle = style({ + width: '100%', + height: '1px', + backgroundColor: cssVarV2('layer/insideBorder/border'), position: 'relative', display: 'flex', justifyContent: 'space-between', @@ -40,7 +43,7 @@ export const nodeStyle = style({ width: '4px', height: '4px', border: '2px solid transparent', - backgroundColor: cssVarV2('layer/border'), + backgroundColor: cssVarV2('layer/insideBorder/border'), borderRadius: '50%', position: 'absolute', top: '50%', diff --git a/packages/frontend/component/src/ui/slider/slider.stories.tsx b/packages/frontend/component/src/ui/slider/slider.stories.tsx index dffdda38c1..900dc4e26c 100644 --- a/packages/frontend/component/src/ui/slider/slider.stories.tsx +++ b/packages/frontend/component/src/ui/slider/slider.stories.tsx @@ -17,7 +17,8 @@ const Template: StoryFn = args => { export const Default: StoryFn = Template.bind(undefined); Default.args = { min: 0, - max: 100, + max: 10, + width: 500, step: 1, - nodes: [0, 50, 100], + nodes: [0, 5, 10], }; diff --git a/packages/frontend/component/src/ui/slider/slider.tsx b/packages/frontend/component/src/ui/slider/slider.tsx index 85ec71334e..cba5734ce5 100644 --- a/packages/frontend/component/src/ui/slider/slider.tsx +++ b/packages/frontend/component/src/ui/slider/slider.tsx @@ -4,49 +4,72 @@ import { useRef } from 'react'; import * as styles from './index.css'; export interface SliderProps extends Sliders.SliderProps { + width?: number; + containerStyle?: React.CSSProperties; + rootStyle?: React.CSSProperties; + trackStyle?: React.CSSProperties; + rangeStyle?: React.CSSProperties; + thumbStyle?: React.CSSProperties; + noteStyle?: React.CSSProperties; nodes?: number[]; // The values where the nodes should be placed } export const Slider = ({ value, - min, - max, + min = 0, + max = 10, step, + width = 250, nodes, + containerStyle, + rootStyle, + trackStyle, + rangeStyle, + thumbStyle, + noteStyle, ...props }: SliderProps) => { const sliderRef = useRef(null); return ( - - - - {!!nodes && - nodes.map((nodeValue, index) => ( -
= nodeValue} - style={{ - left: `${((nodeValue - (min !== undefined ? min : 0)) / (max !== undefined ? max - (min !== undefined ? min : 0) : 1)) * 100}%`, - transform: - index === 0 - ? 'translateY(-50%)' - : index === nodes.length - 1 - ? 'translateY(-50%) translateX(-100%)' - : undefined, - }} +
+ + +
+ - ))} - - - +
+ + {!!nodes && + nodes.map((nodeValue, index) => ( +
= nodeValue} + style={{ + left: `${((nodeValue - (min !== undefined ? min : 0)) / (max !== undefined ? max - (min !== undefined ? min : 0) : 1)) * 100}%`, + transform: + index === 0 + ? 'translateY(-50%)' + : index === nodes.length - 1 + ? 'translateY(-50%) translateX(-100%)' + : undefined, + ...noteStyle, + }} + /> + ))} + + + +
); };