+ {(() => {
+ const hasAnyPositivePrice =
+ (item.pricePerHour !== undefined &&
+ Number(item.pricePerHour) > 0) ||
+ (item.pricePerDay !== undefined &&
+ Number(item.pricePerDay) > 0) ||
+ (item.pricePerWeek !== undefined &&
+ Number(item.pricePerWeek) > 0) ||
+ (item.pricePerMonth !== undefined &&
+ Number(item.pricePerMonth) > 0);
+
+ const hasAnyZeroPrice =
+ (item.pricePerHour !== undefined &&
+ Number(item.pricePerHour) === 0) ||
+ (item.pricePerDay !== undefined &&
+ Number(item.pricePerDay) === 0) ||
+ (item.pricePerWeek !== undefined &&
+ Number(item.pricePerWeek) === 0) ||
+ (item.pricePerMonth !== undefined &&
+ Number(item.pricePerMonth) === 0);
+
+ if (!hasAnyPositivePrice && hasAnyZeroPrice) {
+ return (
+
+
Free to Borrow
+
+ );
+ }
+
+ return (
+ <>
+ {item.pricePerHour !== undefined &&
+ Number(item.pricePerHour) > 0 && (
+
+
+ ${Math.floor(Number(item.pricePerHour))}/Hour
+
+
+ )}
+ {item.pricePerDay !== undefined &&
+ Number(item.pricePerDay) > 0 && (
+
+
+ ${Math.floor(Number(item.pricePerDay))}/Day
+
+
+ )}
+ {item.pricePerWeek !== undefined &&
+ Number(item.pricePerWeek) > 0 && (
+
+
+ ${Math.floor(Number(item.pricePerWeek))}/Week
+
+
+ )}
+ {item.pricePerMonth !== undefined &&
+ Number(item.pricePerMonth) > 0 && (
+
+
+ ${Math.floor(Number(item.pricePerMonth))}/Month
+
+
+ )}
+ >
+ );
+ })()}
+
+ {/* Rental Period Selection - Only show for non-owners */}
+ {!isOwner && item.isAvailable && !isAlreadyRenting && (
+ <>
+
+
+
+
+
+
+ handleDateTimeChange(
+ "startDate",
+ e.target.value
+ )
+ }
+ min={new Date().toLocaleDateString()}
+ style={{ flex: "1 1 50%" }}
+ />
+
+
+
+
+
+
+
+
+ handleDateTimeChange("endDate", e.target.value)
+ }
+ min={
+ rentalDates.startDate ||
+ new Date().toLocaleDateString()
+ }
+ style={{ flex: "1 1 50%" }}
+ />
+
+
+
+
+ {rentalDates.startDate && rentalDates.endDate && (
+
+ {costLoading ? (
+
+
+ Calculating...
+
+
+ ) : costError ? (
+
{costError}
+ ) : totalCost > 0 ? (
+
Total: ${totalCost}
+ ) : null}
+
+ )}
+
+ >
+ )}
+
+ {/* Action Buttons */}
+ {!isOwner && item.isAvailable && !isAlreadyRenting && (
+
+
+
+ )}
+ {!isOwner && isAlreadyRenting && (
+
+
+
+ )}
+