1
0
Fork 0

Fix some mobile styles

This commit is contained in:
Pabloader 2026-03-27 19:44:41 +00:00
parent 5453b0513f
commit 24c634d40a
4 changed files with 13 additions and 28 deletions

View File

@ -24,6 +24,10 @@
padding: 0 72px 72px; padding: 0 72px 72px;
} }
.content.menuContent {
padding-bottom: 10px;
}
.editable { .editable {
width: 100%; width: 100%;
min-height: 100%; min-height: 100%;

View File

@ -29,11 +29,6 @@
} }
.closed { .closed {
width: 32px;
min-width: 32px;
}
.closed[data-controlled] {
width: 0; width: 0;
min-width: 0; min-width: 0;
border: none; border: none;

View File

@ -94,7 +94,7 @@ export const Editor = () => {
return ( return (
<div class={styles.editor}> <div class={styles.editor}>
{currentStory && <div class={styles.title}>{currentStory.title}</div>} {currentStory && <div class={styles.title}>{currentStory.title}</div>}
<div class={styles.content} ref={contentRef}> <div class={clsx(styles.content, currentTab === 'menu' && styles.menuContent)} ref={contentRef}>
{currentTab === "menu" && ( {currentTab === "menu" && (
<Menu /> <Menu />
)} )}

View File

@ -1,43 +1,29 @@
import clsx from "clsx"; import clsx from "clsx";
import type { ComponentChildren } from "preact"; import type { ComponentChildren } from "preact";
import { useBool } from "@common/hooks/useBool";
import styles from '../assets/sidebar.module.css'; import styles from '../assets/sidebar.module.css';
import { PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen } from "lucide-preact"; import { PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen } from "lucide-preact";
interface Props { interface Props {
side: 'left' | 'right'; side: 'left' | 'right';
children?: ComponentChildren; children?: ComponentChildren;
open?: boolean; open: boolean;
onToggle?: () => void; onToggle: () => void;
onCollapseChanged?: (collapsed: boolean) => void;
class?: string; class?: string;
} }
export const Sidebar = ({ side, children, open: controlledOpen, onToggle, onCollapseChanged, class: className }: Props) => { export const Sidebar = ({ side, children, open, onToggle, class: className }: Props) => {
const internalOpen = useBool(true);
const isControlled = controlledOpen !== undefined;
const isOpen = isControlled ? controlledOpen : internalOpen.value;
const handleToggle = () => {
if (isControlled) {
onToggle?.();
} else {
internalOpen.toggle();
}
onCollapseChanged?.(!isOpen);
};
const isLeft = side === 'left'; const isLeft = side === 'left';
const IconComponent = isLeft const IconComponent = isLeft
? (isOpen ? PanelLeftClose : PanelLeftOpen) ? (open ? PanelLeftClose : PanelLeftOpen)
: (isOpen ? PanelRightClose : PanelRightOpen); : (open ? PanelRightClose : PanelRightOpen);
return ( return (
<div class={clsx(styles.sidebar, isOpen ? styles.open : styles.closed, className)} data-side={side} data-controlled={isControlled || undefined}> <div class={clsx(styles.sidebar, open ? styles.open : styles.closed, className)} data-side={side}>
<button class={clsx(styles.toggle, isControlled && styles.toggleMobile)} onClick={handleToggle}> <button class={styles.toggle} onClick={onToggle}>
<IconComponent size={16} /> <IconComponent size={16} />
</button> </button>
{isOpen && ( {open && (
<div class={styles.content}> <div class={styles.content}>
{children} {children}
</div> </div>