import { Product } from "@medusajs/medusa" import { useTranslation } from "react-i18next" import useEditProductActions from "../../../hooks/use-edit-product-actions" import useToggleState from "../../../hooks/use-toggle-state" import { FeatureFlag, useFeatureFlag, } from "../../../providers/feature-flag-provider" import FeatureToggle from "../../fundamentals/feature-toggle" import ChannelsIcon from "../../fundamentals/icons/channels-icon" import EditIcon from "../../fundamentals/icons/edit-icon" import TrashIcon from "../../fundamentals/icons/trash-icon" import { ActionType } from "../../molecules/actionables" import DelimitedList from "../../molecules/delimited-list" import SalesChannelsDisplay from "../../molecules/sales-channels-display" import StatusSelector from "../../molecules/status-selector" import Section from "../section" import ChannelsModal from "./channels-modal" import GeneralModal from "./general-modal" type Props = { product: Product } const ProductGeneralSection = ({ product }: Props) => { const { t } = useTranslation() const { onDelete, onStatusChange } = useEditProductActions(product.id) const { state: infoState, close: closeInfo, toggle: toggleInfo, } = useToggleState() const { state: channelsState, close: closeChannels, toggle: toggleChannels, } = useToggleState(false) const { isFeatureEnabled } = useFeatureFlag() const actions: ActionType[] = [ { label: t( "product-general-section-edit-general-information", "Edit General Information" ), onClick: toggleInfo, icon: , }, { label: t("product-general-section-delete", "Delete"), onClick: onDelete, variant: "danger", icon: , }, ] if (isFeatureEnabled("sales_channels")) { actions.splice(1, 0, { label: t( "product-general-section-edit-sales-channels", "Edit Sales Channels" ), onClick: toggleChannels, icon: , }) } return ( <>
onStatusChange(product.status)} /> } >

{product.description}

) } type DetailProps = { title: string value?: string[] | string | null } const Detail = ({ title, value }: DetailProps) => { const DetailValue = () => { if (!Array.isArray(value)) { return

{value ? value : "–"}

} if (value.length) { return } return

} return (

{title}

) } const ProductDetails = ({ product }: Props) => { const { isFeatureEnabled } = useFeatureFlag() const { t } = useTranslation() return (

{t("product-general-section-details", "Details")}

{isFeatureEnabled(FeatureFlag.PRODUCT_CATEGORIES) && ( c.name)} /> )} 0 ? t("product-general-section-count", "{{count}}", { count: Object.keys(product.metadata || {}).length, }) : undefined } />
) } const ProductTags = ({ product }: Props) => { if (product.tags?.length === 0) { return null } return (
    {product.tags.map((t) => (
  • {t.value}
  • ))}
) } const ProductSalesChannels = ({ product }: Props) => { const { t } = useTranslation() return (

{t("product-general-section-sales-channels", "Sales channels")}

) } export default ProductGeneralSection