diff --git a/app/features/map-planner/components/Planner.module.css b/app/features/map-planner/components/Planner.module.css index 85f171550..f155e7526 100644 --- a/app/features/map-planner/components/Planner.module.css +++ b/app/features/map-planner/components/Planner.module.css @@ -1,8 +1,45 @@ -.topSection { +.topWrapper { position: fixed; z-index: 10; top: 0; left: 50%; + transform: translateX(-50%); + display: flex; + flex-direction: column; + align-items: center; + max-width: 100%; +} + +.topWrapperCollapsed { + transform: translateX(-50%) translateY(-100%); + + & .topSection { + visibility: hidden; + } +} + +.topToggle { + position: absolute; + bottom: 0; + transform: translateY(100%); + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + width: var(--field-size); + padding: var(--s-0-5) 0; + border: var(--border-style); + border-top: none; + border-radius: 0 0 var(--radius-selector) var(--radius-selector); + background-color: var(--color-bg); + cursor: pointer; + + &:hover { + background-color: var(--color-bg-high); + } +} + +.topSection { display: flex; align-items: center; padding: var(--s-2); @@ -11,7 +48,6 @@ border-radius: 0 0 var(--radius-box) var(--radius-box); background-color: var(--color-bg); gap: var(--s-2); - transform: translate(-50%, 0); max-width: 100%; overflow: auto; animation: scrolling forwards; @@ -27,19 +63,17 @@ } } -.outlineToggle { - position: fixed; - z-index: 10; - top: 10%; - left: 5px; -} - .outlineToggleButton { background-color: var(--color-bg-high); color: var(--color-text); font-size: var(--font-xs); padding: var(--s-2); - width: 140px; + width: 100%; + border-radius: 0; + border-bottom: var(--border-style); + transform: translateY(0); + position: sticky; + top: 0; } .outlineToggleButtonOutlined { @@ -47,12 +81,46 @@ color: var(--color-text-inverse); } -.weaponsSection { +.weaponsWrapper { position: fixed; z-index: 10; - top: 15%; + top: 15vh; + left: 0; +} + +.weaponsWrapperCollapsed { + transform: translateX(-100%); + + & .weaponsSection { + visibility: hidden; + } +} + +.weaponsToggle { + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%) translateX(100%); + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + height: var(--field-size); + padding: 0 var(--s-0-5); + border: var(--border-style); + border-left: none; + border-radius: 0 var(--radius-selector) var(--radius-selector) 0; + background-color: var(--color-bg); + cursor: pointer; + + &:hover { + background-color: var(--color-bg-high); + } +} + +.weaponsSection { width: 150px; - max-height: 85vh; + max-height: 70vh; border: var(--border-style); border-left: transparent; border-radius: 0 var(--radius-box) var(--radius-box) 0; @@ -85,7 +153,7 @@ .stylePanel { position: fixed; z-index: 10; - top: calc(10% - 8px); + top: 15vh; right: 0; } diff --git a/app/features/map-planner/components/Planner.tsx b/app/features/map-planner/components/Planner.tsx index f60970e94..a3d78dfbf 100644 --- a/app/features/map-planner/components/Planner.tsx +++ b/app/features/map-planner/components/Planner.tsx @@ -22,7 +22,13 @@ import { Tldraw, } from "@tldraw/tldraw"; import clsx from "clsx"; -import { LogOut } from "lucide-react"; +import { + ChevronDown, + ChevronLeft, + ChevronRight, + ChevronUp, + LogOut, +} from "lucide-react"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { useTheme } from "~/features/theme/core/provider"; @@ -55,11 +61,15 @@ const BACKGROUND_WIDTH = 1127; const BACKGROUND_HEIGHT = 634; export default function Planner() { - const { i18n } = useTranslation(); + const { t, i18n } = useTranslation(["common"]); const { htmlThemeClass } = useTheme(); + const isWide = i18n.language === "fr"; + const [editor, setEditor] = React.useState(null); const [imgOutlined, setImgOutlined] = React.useState(false); + const [topCollapsed, setTopCollapsed] = React.useState(false); + const [weaponsCollapsed, setWeaponsCollapsed] = React.useState(false); const [activeDragItem, setActiveDragItem] = React.useState<{ src: string; previewPath: string; @@ -246,9 +256,62 @@ export default function Planner() { onDragStart={handleDragStart} onDragEnd={handleDragEnd} > - - - +
+ + +
+
+
+ + +
+ +
@@ -291,20 +354,16 @@ function OutlineToggle({ }; return ( -
- - {outlined - ? t("common:actions.outlined") - : t("common:actions.noOutline")} - -
+ + {outlined ? t("common:actions.outlined") : t("common:actions.noOutline")} + ); } @@ -353,18 +412,10 @@ function DraggableWeaponButton({ } function WeaponImageSelector() { - const { t, i18n } = useTranslation(["weapons", "common", "game-misc"]); - - const isWide = i18n.language === "fr"; + const { t } = useTranslation(["weapons", "common", "game-misc"]); return ( -
+ <> {weaponCategories.map((category) => { return (
@@ -467,7 +518,7 @@ function WeaponImageSelector() { })}
- + ); } diff --git a/app/features/map-planner/plans-global.css b/app/features/map-planner/plans-global.css index 33402a45d..66e648ca7 100644 --- a/app/features/map-planner/plans-global.css +++ b/app/features/map-planner/plans-global.css @@ -62,8 +62,25 @@ body:has(.planner) header { display: none; } -.tl-canvas { - background-color: var(--color-bg); +.tl-theme__dark.tl-theme__dark, +.tl-theme__light.tl-theme__light { + --color-panel: var(--color-bg); + --color-divider: var(--color-border); + --color-selected: var(--color-text-accent); + --color-selected-contrast: var(--color-text-inverse); + --color-hint: var(--color-bg-high); + --color-muted-2: var(--color-bg-high); + --color-background: var(--color-bg); +} + +.tlui-style-panel, +.tlui-toolbar__tools, +.tlui-popover__content { + border: var(--border-style); +} + +.tlui-style-panel { + margin-top: 0 !important; } .tlui-toolbar-container.tlui-toolbar__tools {