diff --git a/app/designer/features/topbar/breakpoints.tsx b/app/designer/features/topbar/breakpoints.tsx index f7426dbabd..dbf039ee3e 100644 --- a/app/designer/features/topbar/breakpoints.tsx +++ b/app/designer/features/topbar/breakpoints.tsx @@ -21,17 +21,17 @@ import { useSelectedBreakpoint, } from "../../shared/nano-values"; -type EditableBreakpointProps = { +type BreakpointEditorItemProps = { breakpoint: Breakpoint; onChange: (breakpoint: Breakpoint) => void; onFocus: () => void; }; -const EditableBreakpoint = ({ +const BreakpointEditorItem = ({ breakpoint: initialBreakpoint, onChange, onFocus, -}: EditableBreakpointProps) => { +}: BreakpointEditorItemProps) => { const [breakpoint, setBreakpoint] = useState(initialBreakpoint); useDebounce( @@ -82,6 +82,39 @@ const EditableBreakpoint = ({ ); }; +type BreakpointsEditorProps = { + breakpoints: Array; + onSelect: (breakpoint: Breakpoint) => void; + onChange: (breakpoint: Breakpoint) => void; +}; + +const BreakpointsEditor = ({ + breakpoints, + onSelect, + onChange, +}: BreakpointsEditorProps) => { + return ( + <> + {breakpoints.map((breakpoint, index) => { + if (breakpoint.ref === "default") return null; + return ( + { + onSelect(breakpoint); + }} + onChange={(breakpoint) => { + onSelect(breakpoint); + onChange(breakpoint); + }} + /> + ); + })} + + ); +}; + const Hint = ({ breakpoint }: { breakpoint: Breakpoint }) => { return ( @@ -93,6 +126,15 @@ const Hint = ({ breakpoint }: { breakpoint: Breakpoint }) => { ); }; +const BreakpointSelectorItem = ({ breakpoint }: { breakpoint: Breakpoint }) => ( + + {breakpoint.label} + + {breakpoint.minWidth} + + +); + const menuItemCss = { display: "flex", gap: "$3", @@ -123,56 +165,39 @@ export const Breakpoints = ({ publish }: BreakpointsProps) => { - {breakpoints.map((breakpoint, index) => { - if (isEditing) { - if (breakpoint.ref === "default") return null; + {isEditing ? ( + { + publish({ type: "breakpointChange", payload: breakpoint }); + }} + /> + ) : ( + breakpoints.map((breakpoint, index) => { return ( - { + css={menuItemCss} + onMouseOver={() => { setBreakpointHint(breakpoint); }} - onChange={(breakpoint) => { - setBreakpointHint(breakpoint); - publish({ type: "breakpointChange", payload: breakpoint }); + onMouseOut={() => { + setBreakpointHint(selectedBreakpoint); + }} + onSelect={() => { + publish({ + type: "selectBreakpoint", + payload: breakpoint, + }); + setSelectedBreakpoint(breakpoint); }} - /> - ); - } - - return ( - { - setBreakpointHint(breakpoint); - }} - onMouseOut={() => { - setBreakpointHint(selectedBreakpoint); - }} - onSelect={() => { - publish({ - type: "selectBreakpoint", - payload: breakpoint, - }); - setSelectedBreakpoint(breakpoint); - }} - > - - {breakpoint.label} - - {breakpoint.minWidth} - - - - ); - })} + + + ); + }) + )}