# Practice 02 · Component contracts

## A. Build a responsibility
Using checkpoint 02 as your starting point, add a small Availability component that accepts a number of places. It must render “Currently full” for zero and “N fictional places” for positive numbers. Use it in two cards. Predict the output for zero and seven before running it. Preserve the heading hierarchy and meaningful elements.

## B. Repair the caller
A learner writes `<Availability places="0" />` and then changes the component's prop type to any to silence the error. Explain why this removes useful information. Correct the call and the prop type. Also explain what `places && <p>Available</p>` can show when places is zero.

## C. Transfer
Design a VenueNote component for two event cards. Choose its inputs and decide whether it needs state. Add a short note only when the location text is nonempty. Explain why one component per word would be a poor boundary. Run type-checking and inspect the rendered semantic structure.

Completion evidence: typed contract, two distinct outputs, caller repair, and one paragraph defending your boundary. [Separate solutions](../solutions/02.html).
