Skip to content

Item Components

Available Components

ComponentDescription
ItemListTablePaginated item list
ItemFormCreate/edit item
ItemSelectDropdown for selecting items
ItemCardDisplay item as card

ItemListTable

Display a searchable catalog:

Item Listtypescript
import { ItemListTable } from "@/components/space-invoices/items";
import { useEntities } from "@/providers/entities-provider";

function _ItemsPage() {
  const { activeEntity } = useEntities();

  return (
    id}
      onRowClick={(item) => {
        navigate(`/items/${item.id}`);
      }}
      onCreateClick={() => navigate("/items/new")}
    />
  );
}

Props

PropTypeDescription
entityIdstringEntity ID
onRowClick(item) => voidRow click handler
onCreateClick() => voidCreate button handler

ItemForm

Create or edit items:

Item Formtypescript
import { ItemForm } from "@/components/space-invoices/items";
import { useEntities } from "@/providers/entities-provider";

function _NewItemPage() {
  const { activeEntity } = useEntities();

  return (
    id}
      onSuccess={(item) => {
        toast.success("Item created");
        navigate(`/items/${item.id}`);
      }}
      onCancel={() => navigate("/items")}
    />
  );
}

Props

PropTypeDescription
entityIdstringEntity ID (for create)
itemIdstringItem ID (for edit)
onSuccess(item) => voidSuccess callback
onCancel() => voidCancel callback

ItemSelect

Select items when creating invoices:

Item Selecttypescript
import { ItemSelect } from "@/components/space-invoices/items";

function _InvoiceLineItem({ index }) {
  const { setValue, watch } = useFormContext();
  const selectedItemId = watch(`items.${index}.itemId`);

  return (
    id}
      value={selectedItemId}
      onChange={(item) => {
        // Auto-fill fields from selected item
        setValue(`items.${index}.name`, item.name);
        setValue(`items.${index}.price`, item.price);
        setValue(`items.${index}.unit`, item.unit);
      }}
      placeholder="Select an item or type custom..."
    />
  );
}

Props

PropTypeDescription
entityIdstringEntity ID
valuestringSelected item ID
onChange(item) => voidReturns full item object
multiplebooleanAllow multiple selection

Next Steps