import React, {Fragment} from 'react'; import {DataTablePage} from '../../datatable/page/data-table-page'; import {IconButton} from '../../ui/buttons/icon-button'; import {EditIcon} from '../../icons/material/Edit'; import {FormattedDate} from '../../i18n/formatted-date'; import {ColumnConfig} from '../../datatable/column-config'; import {Trans} from '../../i18n/trans'; import {DataTableEmptyStateMessage} from '../../datatable/page/data-table-emty-state-message'; import softwareEngineerSvg from './../tags/software-engineer.svg'; import {DataTableAddItemButton} from '../../datatable/data-table-add-item-button'; import {Product} from '../../billing/product'; import {NameWithAvatar} from '../../datatable/column-templates/name-with-avatar'; import {Link} from 'react-router-dom'; import {FormattedPrice} from '../../i18n/formatted-price'; import {SyncIcon} from '../../icons/material/Sync'; import {useSyncProducts} from './requests/use-sync-products'; import {Tooltip} from '../../ui/tooltip/tooltip'; import {useDeleteProduct} from './requests/use-delete-product'; import {DeleteIcon} from '../../icons/material/Delete'; import {DialogTrigger} from '../../ui/overlays/dialog/dialog-trigger'; import {ConfirmationDialog} from '../../ui/overlays/dialog/confirmation-dialog'; import {useNavigate} from '../../utils/hooks/use-navigate'; import {PlansIndexPageFilters} from './plans-index-page-filters'; const columnConfig: ColumnConfig[] = [ { key: 'name', allowsSorting: true, visibleInMode: 'all', header: () => , body: product => { const price = product.prices[0]; return ( ) : ( ) } /> ); }, }, { key: 'created_at', allowsSorting: true, maxWidth: 'max-w-100', header: () => , body: product => , }, { key: 'updated_at', allowsSorting: true, maxWidth: 'max-w-100', header: () => , body: product => , }, { key: 'actions', header: () => , visibleInMode: 'all', hideHeader: true, align: 'end', maxWidth: 'max-w-84', body: product => { return ( ); }, }, ]; export function PlansIndexPage() { const navigate = useNavigate(); return ( } columns={columnConfig} actions={} enableSelection={false} filters={PlansIndexPageFilters} onRowAction={item => { navigate(`/admin/plans/${item.id}/edit`); }} emptyStateMessage={ } filteringTitle={} /> } /> ); } interface DeleteProductButtonProps { product: Product; } function DeleteProductButton({product}: DeleteProductButtonProps) { const deleteProduct = useDeleteProduct(); return ( { if (confirmed) { deleteProduct.mutate({productId: product.id}); } }} > }> } body={} confirm={} /> ); } function Actions() { const syncPlans = useSyncProducts(); return ( }> { syncPlans.mutate(); }} > ); }