feat(dashboard,types,js-sdk,ui): Tax Regions UI (#7935)
This commit is contained in:
committed by
GitHub
parent
75e7047243
commit
046a34bdfc
@@ -1,4 +1,4 @@
|
||||
import { ArrowUpDown } from "@medusajs/icons"
|
||||
import { DescendingSorting } from "@medusajs/icons"
|
||||
import { DropdownMenu, IconButton } from "@medusajs/ui"
|
||||
import { useState } from "react"
|
||||
import { useTranslation } from "react-i18next"
|
||||
@@ -107,7 +107,7 @@ export const DataTableOrderBy = <TData,>({
|
||||
<DropdownMenu>
|
||||
<DropdownMenu.Trigger asChild>
|
||||
<IconButton size="small">
|
||||
<ArrowUpDown />
|
||||
<DescendingSorting />
|
||||
</IconButton>
|
||||
</DropdownMenu.Trigger>
|
||||
<DropdownMenu.Content className="z-[1]" align="end">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Tooltip } from "@medusajs/ui"
|
||||
import format from "date-fns/format"
|
||||
import { format } from "date-fns/format"
|
||||
import { useTranslation } from "react-i18next"
|
||||
import { PlaceholderCell } from "../placeholder-cell"
|
||||
|
||||
type DateCellProps = {
|
||||
date: Date | string | null
|
||||
date?: Date | string | null
|
||||
}
|
||||
|
||||
export const DateCell = ({ date }: DateCellProps) => {
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
import type { Discount } from "@medusajs/medusa"
|
||||
|
||||
import { useTranslation } from "react-i18next"
|
||||
|
||||
type DiscountCellProps = {
|
||||
discount: Discount
|
||||
}
|
||||
|
||||
export const CodeCell = ({ discount }: DiscountCellProps) => {
|
||||
return (
|
||||
<div className="flex h-full w-full items-center gap-x-3 overflow-hidden">
|
||||
{/* // TODO: border color inversion*/}
|
||||
<span className="bg-ui-tag-neutral-bg truncate rounded-md border border-neutral-200 p-1 text-xs">
|
||||
{discount.code}
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export const CodeHeader = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<div className=" flex h-full w-full items-center ">
|
||||
<span>{t("fields.code")}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
export * from "./code-cell"
|
||||
@@ -1,25 +0,0 @@
|
||||
import type { Discount } from "@medusajs/medusa"
|
||||
|
||||
import { useTranslation } from "react-i18next"
|
||||
|
||||
type DiscountCellProps = {
|
||||
discount: Discount
|
||||
}
|
||||
|
||||
export const DescriptionCell = ({ discount }: DiscountCellProps) => {
|
||||
return (
|
||||
<div className="flex h-full w-full items-center gap-x-3 overflow-hidden">
|
||||
<span className="truncate">{discount.rule.description}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export const DescriptionHeader = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<div className=" flex h-full w-full items-center ">
|
||||
<span>{t("fields.description")}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
export * from "./description-cell"
|
||||
@@ -1 +0,0 @@
|
||||
export * from "./redemption-cell.tsx"
|
||||
@@ -1,23 +0,0 @@
|
||||
import { useTranslation } from "react-i18next"
|
||||
|
||||
type DiscountCellProps = {
|
||||
redemptions: number
|
||||
}
|
||||
|
||||
export const RedemptionCell = ({ redemptions }: DiscountCellProps) => {
|
||||
return (
|
||||
<div className="flex h-full w-full items-center justify-end gap-x-3 text-right">
|
||||
<span>{redemptions}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export const RedemptionHeader = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<div className="flex h-full w-full items-center justify-end text-right">
|
||||
<span className="truncate">{t("fields.totalRedemptions")}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
export * from "./status-cell"
|
||||
@@ -1,45 +0,0 @@
|
||||
import { Discount } from "@medusajs/medusa"
|
||||
|
||||
import { StatusCell as StatusCell_ } from "../../common/status-cell"
|
||||
|
||||
import { useTranslation } from "react-i18next"
|
||||
import {
|
||||
getDiscountStatus,
|
||||
PromotionStatus,
|
||||
} from "../../../../../lib/discounts.ts"
|
||||
|
||||
type DiscountCellProps = {
|
||||
discount: Discount
|
||||
}
|
||||
|
||||
export const StatusCell = ({ discount }: DiscountCellProps) => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
const [color, text] = {
|
||||
[PromotionStatus.DISABLED]: [
|
||||
"grey",
|
||||
t("discounts.discountStatus.disabled"),
|
||||
],
|
||||
[PromotionStatus.ACTIVE]: ["green", t("discounts.discountStatus.active")],
|
||||
[PromotionStatus.SCHEDULED]: [
|
||||
"orange",
|
||||
t("discounts.discountStatus.scheduled"),
|
||||
],
|
||||
[PromotionStatus.EXPIRED]: ["red", t("discounts.discountStatus.expired")],
|
||||
}[getDiscountStatus(discount)] as [
|
||||
"grey" | "orange" | "green" | "red",
|
||||
string
|
||||
]
|
||||
|
||||
return <StatusCell_ color={color}>{text}</StatusCell_>
|
||||
}
|
||||
|
||||
export const StatusHeader = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<div className=" flex h-full w-full items-center ">
|
||||
<span>{t("fields.status")}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
export * from "./value-cell.tsx"
|
||||
@@ -1,35 +0,0 @@
|
||||
import { DiscountRule } from "@medusajs/medusa"
|
||||
|
||||
import { useTranslation } from "react-i18next"
|
||||
import { MoneyAmountCell } from "../../common/money-amount-cell"
|
||||
|
||||
type DiscountCellProps = {
|
||||
rule: DiscountRule
|
||||
currencyCode: string
|
||||
}
|
||||
|
||||
export const ValueCell = ({ currencyCode, rule }: DiscountCellProps) => {
|
||||
const isFixed = rule.type === "fixed"
|
||||
const isPercentage = rule.type === "percentage"
|
||||
const isFreeShipping = rule.type === "free_shipping"
|
||||
|
||||
return (
|
||||
<div className="flex h-full w-full items-center gap-x-3 overflow-hidden">
|
||||
{isFreeShipping && <span>Free shipping</span>}
|
||||
{isPercentage && <span className="">{rule.value}%</span>}
|
||||
{isFixed && (
|
||||
<MoneyAmountCell currencyCode={currencyCode} amount={rule.value} />
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export const ValueHeader = () => {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<div className=" flex h-full w-full items-center ">
|
||||
<span>{t("fields.value")}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import { useTranslation } from "react-i18next"
|
||||
import { RegionCountryDTO } from "@medusajs/types"
|
||||
import { useTranslation } from "react-i18next"
|
||||
|
||||
import { PlaceholderCell } from "../../common/placeholder-cell"
|
||||
import { countries as COUNTRIES } from "../../../../../lib/data/countries"
|
||||
import { ListSummary } from "../../../../common/list-summary"
|
||||
import { countries as COUNTRIES } from "../../../../../lib/countries"
|
||||
import { PlaceholderCell } from "../../common/placeholder-cell"
|
||||
|
||||
type CountriesCellProps = {
|
||||
countries?: RegionCountryDTO[] | null
|
||||
|
||||
Reference in New Issue
Block a user