From 800e22ccab96efd1177145f8bc7e9ab7558b0168 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Tue, 22 Jul 2025 20:15:45 +0700 Subject: [PATCH] combine upload and add popover --- .../comps/Controls3D/Controls3D.tsx | 87 +++---- .../components/popover/src/lib/popover.tsx | 213 +++++++++--------- 2 files changed, 144 insertions(+), 156 deletions(-) diff --git a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx index 7b79e82456..1cc70466ea 100644 --- a/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx +++ b/frontend/apps/editor3d/app/src/pages/PageEnigma/comps/Controls3D/Controls3D.tsx @@ -5,8 +5,8 @@ import { faPlus, faUpRightAndDownLeftFromCenter, faCube, - faArrowUpFromBracket, faImages, + faArrowUpFromBracket, } from "@fortawesome/pro-solid-svg-icons"; import { ButtonIconSelect } from "@storyteller/ui-button-icon-select"; import { Button } from "@storyteller/ui-button"; @@ -44,7 +44,7 @@ import { galleryModalVisibleDuringDrag, } from "@storyteller/ui-gallery-modal"; import { twMerge } from "tailwind-merge"; -import { UploadModalImage } from "~/components/reusable/UploadModalImage"; +import { UploadModalImage } from "../../../../components/reusable/UploadModalImage"; export const Controls3D = () => { useSignals(); @@ -190,19 +190,6 @@ export const Controls3D = () => { } }; - const handleUploadAction = (action: string) => { - switch (action) { - case "3d": - setUpload3DIsShowing(true); - break; - case "image": - setUploadImageIsShowing(true); - break; - default: - break; - } - }; - // Open global Gallery modal const handleOpenGalleryModal = () => { galleryModalVisibleViewMode.value = true; @@ -217,6 +204,12 @@ export const Controls3D = () => { case "library": handleOpenGalleryModal(); break; + case "upload-3d": + setUpload3DIsShowing(true); + break; + case "upload-image": + setUploadImageIsShowing(true); + break; default: break; } @@ -286,7 +279,7 @@ export const Controls3D = () => { { /> ), action: "library", + divider: true, + }, + { + label: "Upload 3D Model", + selected: false, + icon: ( + + ), + action: "upload-3d", + }, + { + label: "Upload Image", + selected: false, + icon: ( + + ), + action: "upload-image", }, ]} onPanelAction={handleAddAssetAction} @@ -322,45 +338,6 @@ export const Controls3D = () => { /> - - - ), - action: "3d", - }, - { - label: "Image", - selected: false, - icon: ( - - ), - action: "image", - }, - ]} - onPanelAction={handleUploadAction} - showIconsInList - buttonClassName="h-9 w-9 rounded-[10px] text-lg bg-white/15 transition-colors hover:bg-white/25" - triggerIcon={ - - } - /> - {items.map((item, index) => ( -
{ - if (!item.disabled) { - handleItemClick(item, close); - } - }} - className={twMerge( - "group flex cursor-pointer items-start gap-2 rounded-lg px-2 py-2 transition-all", - item.selected - ? "bg-black/40 border-l-4 border-primary" - : "hover:bg-black/20", - item.disabled - ? "!cursor-not-allowed opacity-50" - : "" - )} - style={{ minHeight: 48 }} - > -
-
- {showIconsInList && ( - - {item.icon} - - )} -
-
- - {item.label} +
+
{ + if (!item.disabled) { + handleItemClick(item, close); + } + }} + className={twMerge( + "group flex cursor-pointer items-start gap-2 rounded-lg px-2 py-2 transition-all", + item.selected + ? "bg-black/40 border-l-4 border-primary" + : "hover:bg-black/20", + item.disabled + ? "!cursor-not-allowed opacity-50" + : "" + )} + style={{ minHeight: 48 }} + > +
+
+ {showIconsInList && ( + + {item.icon} -
- - {item.description && ( -
- {item.description} -
)} +
+
+ + {item.label} + +
-
- {item.badges && - Array.isArray(item.badges) && - item.badges.map((badge, i) => ( -
- - {badge?.icon && ( - {badge.icon} - )} - {badge?.label || ""} - -
- ))} + {item.description && ( +
+ {item.description} +
+ )} + +
+ {item.badges && + Array.isArray(item.badges) && + item.badges.map((badge, i) => ( +
+ + {badge?.icon && ( + {badge.icon} + )} + {badge?.label || ""} + +
+ ))} +
-
- {item.selected && ( - - - - )} + {item.selected && ( + + + + )} +
+ {item.divider && ( +
+ )}
))} {showAddButton && onAdd && ( @@ -357,57 +362,63 @@ export const PopoverMenu = ({ ) : (
{items.map((item, index) => ( -
- {mode === "toggle" && ( - - {item.selected && ( - - )} - + + {item.divider && ( +
)} - +
))} {showAddButton && onAdd && (